Seam SVN: r10060 - branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/web.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-19 16:13:59 -0500 (Thu, 19 Feb 2009)
New Revision: 10060
Modified:
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/web/ExceptionFilter.java
Log:
JBPAPP-1427
Modified: branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/web/ExceptionFilter.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/web/ExceptionFilter.java 2009-02-19 17:25:24 UTC (rev 10059)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/web/ExceptionFilter.java 2009-02-19 21:13:59 UTC (rev 10060)
@@ -27,6 +27,7 @@
import org.jboss.seam.annotations.web.Filter;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.FacesLifecycle;
+import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.core.ConversationPropagation;
import org.jboss.seam.core.Manager;
import org.jboss.seam.exception.Exceptions;
@@ -92,6 +93,9 @@
(Manager) request.getAttribute( Seam.getComponentName(Manager.class) );
String conversationId = manager==null ? null : manager.getCurrentConversationId();
+ // Ensure that the call in which the exception occurred was cleaned up - it might not be, and there is no harm in trying
+ Lifecycle.endRequest();
+
//Initialize the temporary context objects
FacesLifecycle.beginExceptionRecovery( facesContext.getExternalContext() );
15 years, 7 months
Seam SVN: r10059 - trunk/examples/dvdstore/resources.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-19 12:25:24 -0500 (Thu, 19 Feb 2009)
New Revision: 10059
Modified:
trunk/examples/dvdstore/resources/import.sql
Log:
JBSEAM-3943
Modified: trunk/examples/dvdstore/resources/import.sql
===================================================================
--- trunk/examples/dvdstore/resources/import.sql 2009-02-19 16:18:48 UTC (rev 10058)
+++ trunk/examples/dvdstore/resources/import.sql 2009-02-19 17:25:24 UTC (rev 10059)
@@ -110,14 +110,14 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (2, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (2, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (2, 2, 77, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('3', 'B00000IQW5', 'Always', 19.98, 'http://images.amazon.com/images/P/B00000IQW5.01.MZZZZZZZ.jpg', 'Considered by many to represent a low point in Steven Spielberg''s career, 1990''s Always did suggest something of a temporary drift in the director''s sensibility. A remake of the classic Spencer Tracy film A Guy Named Joe, Always stars Richard Dreyfuss as a Forest Service pilot who takes great risks with his own life to douse wildfires from a plane. After promising his frightened fiancée (Holly Hunter) to keep his feet on the ground and go into teaching, Dreyfuss''s character is killed during one last flight. But his spirit wanders restlessly, hopelessly attached to and possessive of Hunter, who can''t see or hear him. Then the real conflict begins: a trainee pilot (Brad Johnson), a likable doofus, begins wooing a not-unappreciative Hunter');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('3', 'B00000IQW5', 'Always', 19.98, 'http://images.amazon.com/images/P/B00000IQW5.01.MZZZZZZZ.jpg', 'Considered by many to represent a low point in Steven Spielberg''s career, 1990''s Always did suggest something of a temporary drift in the director''s sensibility. A remake of the classic Spencer Tracy film A Guy Named Joe, Always stars Richard Dreyfuss as a Forest Service pilot who takes great risks with his own life to douse wildfires from a plane. After promising his frightened fiance (Holly Hunter) to keep his feet on the ground and go into teaching, Dreyfuss''s character is killed during one last flight. But his spirit wanders restlessly, hopelessly attached to and possessive of Hunter, who can''t see or hear him. Then the real conflict begins: a trainee pilot (Brad Johnson), a likable doofus, begins wooing a not-unappreciative Hunter');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (3, 68)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (3, 2);
insert into CATEGORIES (CATEGORY, NAME) values (11, 'Feature Film-drama');
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (3, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (3, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (3, 3, 79, 15);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('4', 'B000BTGY1O', 'Breakfast at Tiffany''s ', 19.99, 'http://images.amazon.com/images/P/B000BTGY1O.01.MZZZZZZZ.jpg', 'No film better utilizes Audrey Hepburn''s flighty charm and svelte beauty than this romantic adaptation of Truman Capote''s novella. Hepburn''s urban sophisticate Holly Golightly, an enchanting neurotic living off the gifts of gentlemen, is a bewitching figure in designer dresses and costume jewelry. George Peppard is her upstairs neighbor, a struggling writer and "kept" man financed by a steely older woman (Patricia Neal). His growing friendship with the lonely Holly soon turns to love and threatens the delicate balance of both of their compromised lives. Taking liberties with Capote''s bittersweet story, director Blake Edwards and screenwriter George Axelrod turn New York into a city of lovers and create a poignant portrait of Holly, a frustrated romantic with a secret past!
and a hidden vulnerability. Composer Henry Mancini earned Oscars for the hit song "Moon River" and his tastefully romantic score. The only sour note in the whole film is Mickey Rooney''s demeaning performance as the apartment''s Japanese manager, an offensively overdone stereotype even in 1961. The rest of the film has weathered the decades well. Edwards''s elegant yet light touch, Axelrod''s generous screenplay, and Hepburn''s mix of knowing experience and naiveté combine to create one of the great screen romances and a refined slice of high society bohemian chic. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('4', 'B000BTGY1O', 'Breakfast at Tiffany''s ', 19.99, 'http://images.amazon.com/images/P/B000BTGY1O.01.MZZZZZZZ.jpg', 'No film better utilizes Audrey Hepburn''s flighty charm and svelte beauty than this romantic adaptation of Truman Capote''s novella. Hepburn''s urban sophisticate Holly Golightly, an enchanting neurotic living off the gifts of gentlemen, is a bewitching figure in designer dresses and costume jewelry. George Peppard is her upstairs neighbor, a struggling writer and "kept" man financed by a steely older woman (Patricia Neal). His growing friendship with the lonely Holly soon turns to love and threatens the delicate balance of both of their compromised lives. Taking liberties with Capote''s bittersweet story, director Blake Edwards and screenwriter George Axelrod turn New York into a city of lovers and create a poignant portrait of Holly, a frustrated romantic with a secret past!
and a hidden vulnerability. Composer Henry Mancini earned Oscars for the hit song "Moon River" and his tastefully romantic score. The only sour note in the whole film is Mickey Rooney''s demeaning performance as the apartment''s Japanese manager, an offensively overdone stereotype even in 1961. The rest of the film has weathered the decades well. Edwards''s elegant yet light touch, Axelrod''s generous screenplay, and Hepburn''s mix of knowing experience and naivete; combine to create one of the great screen romances and a refined slice of high society bohemian chic. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (4, 68)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (4, 8);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (4, 9);
@@ -198,7 +198,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (13, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (13, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (13, 13, 87, 2);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('14', 'B000B8QG0O', 'Toy Story 2 ', 29.99, 'http://images.amazon.com/images/P/B000B8QG0O.01.MZZZZZZZ.jpg', 'John Lasseter and his gang of high-tech creators at Pixar create another entertainment for the ages. Like the few great movie sequels, Toy Story 2 comments on why the first one was so wonderful while finding a fresh angle worthy of a new film. The craze of toy collecting becomes the focus here, as we find out Woody (voiced by Tom Hanks) is not only a beloved toy to Andy but also a rare doll from a popular ''60s children''s show. When a greedy collector takes Woody, Buzz Lightyear (Tim Allen) launches a rescue mission with Andy''s other toys. To say more would be a crime because this is one of the most creative and smile-inducing films since, well, the first Toy Story. Although the toys look the same as in the 1994 feature, Pixar shows how much technology has advanced: the human c!
haracters look more human, backgrounds are superior, and two action sequences that book-end the film are dazzling. And it''s a hoot for kids and adults. The film is packed with spoofs, easily accessible in-jokes, and inspired voice casting (with newcomer Joan Cusack especially a delight as Cowgirl Jessie). But as the Pixar canon of films illustrates, the filmmakers are storytellers first. Woody''s heart-tugging predicament can easily be translated into the eternal debate of living a good life versus living forever. Toy Story 2 also achieved something in the U.S. two other outstanding 1999 animated features (The Iron Giant, Princess Mononoke) could not: it became a huge box-office hit. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('14', 'B000B8QG0O', 'Toy Story 2 ', 29.99, 'http://images.amazon.com/images/P/B000B8QG0O.01.MZZZZZZZ.jpg', 'John Lasseter and his gang of high-tech creators at Pixar create another entertainment for the ages. Like the few great movie sequels, Toy Story 2 comments on why the first one was so wonderful while finding a fresh angle worthy of a new film. The craze of toy collecting becomes the focus here, as we find out Woody (voiced by Tom Hanks) is not only a beloved toy to Andy but also a rare doll from a popular ''60s children''s show. When a greedy collector takes Woody, Buzz Lightyear (Tim Allen) launches a rescue mission with Andy''s other toys. To say more would be a crime because this is one of the most creative and smile-inducing films since, well, the first Toy Story. Although the toys look the same as in the 1994 feature, Pixar shows how much technology has advanced: the human charac!
ters look more human, backgrounds are superior, and two action sequences that book-end the film are dazzling. And it''s a hoot for kids and adults. The film is packed with spoofs, easily accessible in-jokes, and inspired voice casting (with newcomer Joan Cusack especially a delight as Cowgirl Jessie). But as the Pixar canon of films illustrates, the filmmakers are storytellers first. Woody''s heart-tugging predicament can easily be translated into the eternal debate of living a good life versus living forever. Toy Story 2 also achieved something in the U.S. two other outstanding 1999 animated features (The Iron Giant, Princess Mononoke) could not: it became a huge box-office hit. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (14, 1)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (14, 11)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (14, 18);
@@ -225,7 +225,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (16, 12);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (16, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (16, 16, 35, 4);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('17', '6305368171', 'You''ve Got Mail', 12.98, 'http://images.amazon.com/images/P/6305368171.01.MZZZZZZZ.jpg', 'By now, Tom Hanks and Meg Ryan have amassed such a fund of goodwill with moviegoers that any new onscreen pairing brings nearly reflexive smiles. In You''ve Got Mail, the quintessential boy and girl next door repeat the tentative romantic crescendo that made Sleepless in Seattle, writer-director Nora Ephron''s previous excursion with the duo, a massive hit. The prospective couple do actually meet face to face early on, but Mail otherwise repeats the earlier feature''s gentle, extended tease of saving its romantic resolution until the final, gauzy shot. The underlying narrative is an even more old-fashioned romantic pas de deux that is casually hooked to a newfangled device. The script, cowritten by the director and her sister, Delia Ephron, updates and relocates the Ernst Lubitsc!
h classic, The Shop Around the Corner, to contemporary Manhattan, where Joe Fox (Hanks) is a cheerfully rapacious merchant whose chain of book superstores is gobbling up smaller, more specialized shops such as the children''s bookstore owned by Kathleen Kelly (Ryan). Their lives run in close parallel in the same idealized neighborhood, yet they first meet anonymously, online, where they gradually nurture a warm, even intimate correspondence. As they begin to wonder whether this e-mail flirtation might lead them to be soul mates, however, they meet and clash over their colliding business fortunes. It''s no small testament to the two stars that we wind up liking and caring about them despite the inevitable (and highly manipulative) arc of the plot. Although their chemistry transcended the consciously improbable romantic premise of Sleepless, enabling director Ephron to attain a kind of amorous soufflé, this time around there''s a slow leak that considerably deflates th!
e affair. Less credulous viewers will challenge Joe''s logic in prolon
ging the concealment of his online identity from Kathleen, and may shake their heads at Ephron''s reinvention of Manhattan as a spotless, sun-dappled wonderland where everybody lives in million-dollar apartments and color coordinates their wardrobes for cocktail parties. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('17', '6305368171', 'You''ve Got Mail', 12.98, 'http://images.amazon.com/images/P/6305368171.01.MZZZZZZZ.jpg', 'By now, Tom Hanks and Meg Ryan have amassed such a fund of goodwill with moviegoers that any new onscreen pairing brings nearly reflexive smiles. In You''ve Got Mail, the quintessential boy and girl next door repeat the tentative romantic crescendo that made Sleepless in Seattle, writer-director Nora Ephron''s previous excursion with the duo, a massive hit. The prospective couple do actually meet face to face early on, but Mail otherwise repeats the earlier feature''s gentle, extended tease of saving its romantic resolution until the final, gauzy shot. The underlying narrative is an even more old-fashioned romantic pas de deux that is casually hooked to a newfangled device. The script, cowritten by the director and her sister, Delia Ephron, updates and relocates the Ernst Lubitsc!
h classic, The Shop Around the Corner, to contemporary Manhattan, where Joe Fox (Hanks) is a cheerfully rapacious merchant whose chain of book superstores is gobbling up smaller, more specialized shops such as the children''s bookstore owned by Kathleen Kelly (Ryan). Their lives run in close parallel in the same idealized neighborhood, yet they first meet anonymously, online, where they gradually nurture a warm, even intimate correspondence. As they begin to wonder whether this e-mail flirtation might lead them to be soul mates, however, they meet and clash over their colliding business fortunes. It''s no small testament to the two stars that we wind up liking and caring about them despite the inevitable (and highly manipulative) arc of the plot. Although their chemistry transcended the consciously improbable romantic premise of Sleepless, enabling director Ephron to attain a kind of amorous souffle, this time around there''s a slow leak that considerably deflates the aff!
air. Less credulous viewers will challenge Joe''s logic in prolonging
the concealment of his online identity from Kathleen, and may shake their heads at Ephron''s reinvention of Manhattan as a spotless, sun-dappled wonderland where everybody lives in million-dollar apartments and color coordinates their wardrobes for cocktail parties. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (17, 1)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (17, 19)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (17, 7);
@@ -323,7 +323,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (28, 16);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (28, 17);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (28, 28, 15, 7);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('29', 'B00006ZXSK', 'Ever After - A Cinderella Story', 19.98, 'http://images.amazon.com/images/P/B00006ZXSK.01.MZZZZZZZ.jpg', 'Take away the Fairy Godmother, and what have you got left from the Cinderella fable? The story of a girl for whom a bad stroke of luck is no match for her internal strength and purity of heart. Drew Barrymore plays Cinderella''s alleged inspiration, Danielle, in this romantic drama that purports to tell the "facts" behind the Grimm brothers'' story. One of three daughters of a man (Jeroen Krabbé) who dies and leaves her fate in the hands of a conniving stepmother (Anjelica Huston), Danielle is cast into the lowly role of a servant. Meanwhile, her sisters are evaluated as possible mates for a French prince (Dougray Scott), but he''s far more intrigued with Danielle''s intelligence and beauty');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('29', 'B00006ZXSK', 'Ever After - A Cinderella Story', 19.98, 'http://images.amazon.com/images/P/B00006ZXSK.01.MZZZZZZZ.jpg', 'Take away the Fairy Godmother, and what have you got left from the Cinderella fable? The story of a girl for whom a bad stroke of luck is no match for her internal strength and purity of heart. Drew Barrymore plays Cinderella''s alleged inspiration, Danielle, in this romantic drama that purports to tell the "facts" behind the Grimm brothers'' story. One of three daughters of a man (Jeroen Krabbe) who dies and leaves her fate in the hands of a conniving stepmother (Anjelica Huston), Danielle is cast into the lowly role of a servant. Meanwhile, her sisters are evaluated as possible mates for a French prince (Dougray Scott), but he''s far more intrigued with Danielle''s intelligence and beauty');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (29, 3)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (29, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (29, 19);
@@ -358,7 +358,7 @@
insert into CATEGORIES (CATEGORY, NAME) values (26, 'Science Fiction');
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (32, 26);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (32, 32, 98, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('33', 'B00006ZXSL', 'Never Been Kissed', 14.98, 'http://images.amazon.com/images/P/B00006ZXSL.01.MZZZZZZZ.jpg', 'Let''s get this straight: Drew Barrymore started a production company to develop original scripts outside of Hollywood and the first project she chose to produce was this, a romantic comedy written by USC grads Abby Kohn and Mark Silverstein about a nerdy, virginal woman who returns to high school as an undercover reporter, finally gets to be popular, and falls in love. And Barrymore decided, as producer, that the perfect actress to play this virtuous, clean-cut, and downright annoying geek would be... Drew Barrymore? It''s hard to believe that after The Wedding Singer Barrymore''s not getting enough dopey, formulaic, predictable romantic comedies coming across her desk. The complete inability to buy Barrymore as unattractive, awkward, and unpopular ruins Never Been Kissed from the!
start, but it''s doubtful a better actress could have saved it. The jokes fall flat, the romance between Barrymore and her English teacher (played by Michael Vartan) lacks chemistry, and the portrayals of high school and the newspaper newsroom is clichéd and uninspired (big surprise here: the director, Raja Gosnell, previously made Home Alone 3). Gosnell can''t even give the gifted character actor, John C. Reilly, anything to do. Only David Arquette, who plays Barrymore''s out-of-control brother, brings any energy to the film. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('33', 'B00006ZXSL', 'Never Been Kissed', 14.98, 'http://images.amazon.com/images/P/B00006ZXSL.01.MZZZZZZZ.jpg', 'Let''s get this straight: Drew Barrymore started a production company to develop original scripts outside of Hollywood and the first project she chose to produce was this, a romantic comedy written by USC grads Abby Kohn and Mark Silverstein about a nerdy, virginal woman who returns to high school as an undercover reporter, finally gets to be popular, and falls in love. And Barrymore decided, as producer, that the perfect actress to play this virtuous, clean-cut, and downright annoying geek would be... Drew Barrymore? It''s hard to believe that after The Wedding Singer Barrymore''s not getting enough dopey, formulaic, predictable romantic comedies coming across her desk. The complete inability to buy Barrymore as unattractive, awkward, and unpopular ruins Never Been Kissed from the!
start, but it''s doubtful a better actress could have saved it. The jokes fall flat, the romance between Barrymore and her English teacher (played by Michael Vartan) lacks chemistry, and the portrayals of high school and the newspaper newsroom is cliced and uninspired (big surprise here: the director, Raja Gosnell, previously made Home Alone 3). Gosnell can''t even give the gifted character actor, John C. Reilly, anything to do. Only David Arquette, who plays Barrymore''s out-of-control brother, brings any energy to the film. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (33, 3)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (33, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (33, 8);
@@ -416,7 +416,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (39, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (39, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (39, 39, 80, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('40', 'B00003CXI1', 'Harry Potter and the Sorcerer''s Stone ', 19.98, 'http://images.amazon.com/images/P/B00003CXI1.01.MZZZZZZZ.jpg', 'Here''s an event movie that holds up to being an event. This filmed version of Harry Potter and the Sorcerer''s Stone, adapted from the wildly popular book by J.K. Rowling, stunningly brings to life Harry Potter''s world of Hogwarts, the school for young witches and wizards. The greatest strength of the film comes from its faithfulness to the novel, and this new cinematic world is filled with all the details of Rowling''s imagination, thanks to exuberant sets, elaborate costumes, clever makeup and visual effects, and a crème de la crème cast, including Maggie Smith, Richard Harris, Alan Rickman, and more. Especially fine is the interplay between Harry (Daniel Radcliffe) and his schoolmates Ron (Rupert Grint) and Hermione (Emma Watson), as well as!
his protector, the looming Hagrid (Robbie Coltrane). The second-half adventure');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('40', 'B00003CXI1', 'Harry Potter and the Sorcerer''s Stone ', 19.98, 'http://images.amazon.com/images/P/B00003CXI1.01.MZZZZZZZ.jpg', 'Here''s an event movie that holds up to being an event. This filmed version of Harry Potter and the Sorcerer''s Stone, adapted from the wildly popular book by J.K. Rowling, stunningly brings to life Harry Potter''s world of Hogwarts, the school for young witches and wizards. The greatest strength of the film comes from its faithfulness to the novel, and this new cinematic world is filled with all the details of Rowling''s imagination, thanks to exuberant sets, elaborate costumes, clever makeup and visual effects, and a creme de la creme cast, including Maggie Smith, Richard Harris, Alan Rickman, and more. Especially fine is the interplay between Harry (Daniel Radcliffe) and his schoolmates Ron (Rupert Grint) and Hermione (Emma Watson), as well as his protector!
, the looming Hagrid (Robbie Coltrane). The second-half adventure');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (40, 4)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (40, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (40, 15);
@@ -425,7 +425,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (40, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (40, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (40, 40, 20, 13);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('41', 'B00005JMAH', 'Harry Potter and the Prisoner of Azkaban ', 19.98, 'http://images.amazon.com/images/P/B00005JMAH.01.MZZZZZZZ.jpg', 'Some movie-loving wizards must have cast a magic spell on Harry Potter and the Prisoner of Azkaban, because it''s another grand slam for the Harry Potter franchise. Demonstrating remarkable versatility after the arthouse success of Y Tu Mamá También, director Alfonso Cuarón proves a perfect choice to guide Harry, Hermione, and Ron into treacherous puberty as the now 13-year-old students at Hogwarts School of Witchcraft and Wizardry face a new and daunting challenge: Sirius Black (Gary Oldman) has escaped from Azkaban prison, and for reasons yet unknown (unless, of course, you''ve read J.K. Rowling''s book, considered by many to be the best in the series), he''s after Harry in a bid for revenge. This dark and dangerous mystery drives the !
action while Harry (the fast-growing Daniel Radcliffe) and his third-year Hogwarts classmates discover the flying hippogriff Buckbeak (a marvelous CGI creature), the benevolent but enigmatic Professor Lupin (David Thewlis), horrifying black-robed Dementors, sneaky Peter Pettigrew (Timothy Spall), and the wonderful advantage of having a Time-Turner just when you need one. The familiar Hogwarts staff returns in fine form (including the delightful Michael Gambon, replacing the late Richard Harris as Dumbledore, and Emma Thompson as the goggle-eyed Sybil Trelawney), and even Julie Christie joins this prestigious production for a brief but welcome cameo. Technically dazzling, fast-paced, and chock-full of Rowling''s boundless imagination (loyally adapted by ace screenwriter Steve Kloves), The Prisoner of Azkaban is a Potter-movie classic. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('41', 'B00005JMAH', 'Harry Potter and the Prisoner of Azkaban ', 19.98, 'http://images.amazon.com/images/P/B00005JMAH.01.MZZZZZZZ.jpg', 'Some movie-loving wizards must have cast a magic spell on Harry Potter and the Prisoner of Azkaban, because it''s another grand slam for the Harry Potter franchise. Demonstrating remarkable versatility after the arthouse success of Y Tu Mama Tambien, director Alfonso Cuaron proves a perfect choice to guide Harry, Hermione, and Ron into treacherous puberty as the now 13-year-old students at Hogwarts School of Witchcraft and Wizardry face a new and daunting challenge: Sirius Black (Gary Oldman) has escaped from Azkaban prison, and for reasons yet unknown (unless, of course, you''ve read J.K. Rowling''s book, considered by many to be the best in the series), he''s after Harry in a bid for revenge. This dark and dangerous mystery drives the action while Harry (t!
he fast-growing Daniel Radcliffe) and his third-year Hogwarts classmates discover the flying hippogriff Buckbeak (a marvelous CGI creature), the benevolent but enigmatic Professor Lupin (David Thewlis), horrifying black-robed Dementors, sneaky Peter Pettigrew (Timothy Spall), and the wonderful advantage of having a Time-Turner just when you need one. The familiar Hogwarts staff returns in fine form (including the delightful Michael Gambon, replacing the late Richard Harris as Dumbledore, and Emma Thompson as the goggle-eyed Sybil Trelawney), and even Julie Christie joins this prestigious production for a brief but welcome cameo. Technically dazzling, fast-paced, and chock-full of Rowling''s boundless imagination (loyally adapted by ace screenwriter Steve Kloves), The Prisoner of Azkaban is a Potter-movie classic. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (41, 4)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (41, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (41, 15);
@@ -434,7 +434,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (41, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (41, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (41, 41, 76, 22);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('42', 'B0002TV2WO', 'Harry Potter - Years 1-3 Collection ', 59.98, 'http://images.amazon.com/images/P/B0002TV2WO.01.MZZZZZZZ.jpg', 'The filmed version of Harry Potter and the Sorcerer''s Stone, adapted from the wildly popular book by J.K. Rowling, stunningly brings to life Harry Potter''s world of Hogwarts School of Witchcraft and Wizardry. The greatest strength of the film comes from its faithfulness to the novel, and this new cinematic world is filled with all the details of Rowling''s imagination, thanks to exuberant sets, elaborate costumes, clever makeup and visual effects, and a crème de la crème cast, including Maggie Smith, Richard Harris, Alan Rickman, and more. Especially fine is the interplay between Harry (Daniel Radcliffe) and his schoolmates Ron (Rupert Grint) and Hermione (Emma Watson), as well as his protector, the looming Hagrid (Robbie Coltrane). The second-half ad!
venture');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('42', 'B0002TV2WO', 'Harry Potter - Years 1-3 Collection ', 59.98, 'http://images.amazon.com/images/P/B0002TV2WO.01.MZZZZZZZ.jpg', 'The filmed version of Harry Potter and the Sorcerer''s Stone, adapted from the wildly popular book by J.K. Rowling, stunningly brings to life Harry Potter''s world of Hogwarts School of Witchcraft and Wizardry. The greatest strength of the film comes from its faithfulness to the novel, and this new cinematic world is filled with all the details of Rowling''s imagination, thanks to exuberant sets, elaborate costumes, clever makeup and visual effects, and a creme de la creme cast, including Maggie Smith, Richard Harris, Alan Rickman, and more. Especially fine is the interplay between Harry (Daniel Radcliffe) and his schoolmates Ron (Rupert Grint) and Hermione (Emma Watson), as well as his protector, the looming Hagrid (Robbie Coltrane). The second-half adventure');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (42, 4)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (42, 15);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (42, 3);
@@ -442,7 +442,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (42, 12);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (42, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (42, 42, 78, 20);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('43', 'B000E8N8H0', 'Fun With Dick & Jane', 28.95, 'http://images.amazon.com/images/P/B000E8N8H0.01.MZZZZZZZ.jpg', 'Remakes are always a gamble, so it''s a pleasant surprise that Fun with Dick and Jane pays off with unexpected dividends. It''s as entertaining as the 1977 original starring George Segal and Jane Fonda, and the teaming of Jim Carrey and Téa Leoni makes this a safe bet for comedy fans, in spite of a slapstick screenplay that fails to achieve its fullest potential. Rather than attempt a darkly comedic send-up of the Enron scandal that left thousands of stockholders in financial ruin, director Dean Parisot (Galaxy Quest) opts for a lighter, more accessible (read: commercial) satire of corporate greed and cynicism, beginning in the year 2000 when Dick (Carrey) gets a plum promotion as a mega-corporate communications director just as his boss (Alec Baldwin) is preparing to bail !
out before stock prices plummet. Dick''s wife Jane (Leoni) has quit her job as a travel agent, so the corporate bombshell leaves them penniless and desperate, resorting to petty thievery and, eventually, plotting high-stakes revenge against the greedy executives who ruined their lives. As a send-up of financial distress in a ravaged post-Enron economy, Fun with Dick and Jane delivers laughs with just enough pointed humor to give it a strong satirical edge, and Carrey''s reliable brand of zaniness is controlled enough to balance nicely with Leoni''s more subtle (and woefully underrated) skills as a screen comedienne. And while the "special thanks" end-credits hint at the sharper, more biting satire this might have been, there’s enough fun with Dick and Jane to make this recycled comedy worth a look. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('43', 'B000E8N8H0', 'Fun With Dick & Jane', 28.95, 'http://images.amazon.com/images/P/B000E8N8H0.01.MZZZZZZZ.jpg', 'Remakes are always a gamble, so it''s a pleasant surprise that Fun with Dick and Jane pays off with unexpected dividends. It''s as entertaining as the 1977 original starring George Segal and Jane Fonda, and the teaming of Jim Carrey and Tia Leoni makes this a safe bet for comedy fans, in spite of a slapstick screenplay that fails to achieve its fullest potential. Rather than attempt a darkly comedic send-up of the Enron scandal that left thousands of stockholders in financial ruin, director Dean Parisot (Galaxy Quest) opts for a lighter, more accessible (read: commercial) satire of corporate greed and cynicism, beginning in the year 2000 when Dick (Carrey) gets a plum promotion as a mega-corporate communications director just as his boss (Alec Baldwin) is preparing to bail out b!
efore stock prices plummet. Dick''s wife Jane (Leoni) has quit her job as a travel agent, so the corporate bombshell leaves them penniless and desperate, resorting to petty thievery and, eventually, plotting high-stakes revenge against the greedy executives who ruined their lives. As a send-up of financial distress in a ravaged post-Enron economy, Fun with Dick and Jane delivers laughs with just enough pointed humor to give it a strong satirical edge, and Carrey''s reliable brand of zaniness is controlled enough to balance nicely with Leoni''s more subtle (and woefully underrated) skills as a screen comedienne. And while the "special thanks" end-credits hint at the sharper, more biting satire this might have been, there''s enough fun with Dick and Jane to make this recycled comedy worth a look. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (43, 5)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (43, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (43, 8);
@@ -472,7 +472,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (46, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (46, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (46, 46, 86, 8);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('47', 'B00003CXE4', 'Me, Myself & Irene', 14.98, 'http://images.amazon.com/images/P/B00003CXE4.01.MZZZZZZZ.jpg', 'In Me, Myself & Irene, Jim Carrey plays Charlie Baileygates, a cop for the best police force in the world (Rhode Island). In denial about his wife''s affair, he''s a nice guy who goes around trying to do the right thing but is taken advantage of every step of the way. Instead of confronting people, he takes the abuse, balls it up, and hides it in the pit of his stomach. His psyche can only take so much, though, and soon his alter-ego Hank pops out to do every libidinous thing Charlie would never do. It''s a great premise for a Jim Carrey film. Unfortunately, it''s not a great Jim Carrey film. Famous for the lowbrow, shock comedies like Dumb and Dumber, Kingpin, and There''s Something About Mary, here the Farrelly brothers get lost in a series of lazy gags and an even lazier p!
lot about some evil golf development and the woman, Irene (Renée Zellweger), who needs to be protected because she knows something about it. Some of the jokes hit (there''s a bathroom scene that''s 10 times funnier than the hair-gel gag in There''s Something About Mary), but many more miss. There are some great concepts (his three sons are hip-hop geniuses) that don''t go anywhere (they swear a lot). It''s like the movie itself has a split personality');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('47', 'B00003CXE4', 'Me, Myself & Irene', 14.98, 'http://images.amazon.com/images/P/B00003CXE4.01.MZZZZZZZ.jpg', 'In Me, Myself & Irene, Jim Carrey plays Charlie Baileygates, a cop for the best police force in the world (Rhode Island). In denial about his wife''s affair, he''s a nice guy who goes around trying to do the right thing but is taken advantage of every step of the way. Instead of confronting people, he takes the abuse, balls it up, and hides it in the pit of his stomach. His psyche can only take so much, though, and soon his alter-ego Hank pops out to do every libidinous thing Charlie would never do. It''s a great premise for a Jim Carrey film. Unfortunately, it''s not a great Jim Carrey film. Famous for the lowbrow, shock comedies like Dumb and Dumber, Kingpin, and There''s Something About Mary, here the Farrelly brothers get lost in a series of lazy gags and an even lazier p!
lot about some evil golf development and the woman, Irene (Rene Zellweger), who needs to be protected because she knows something about it. Some of the jokes hit (there''s a bathroom scene that''s 10 times funnier than the hair-gel gag in There''s Something About Mary), but many more miss. There are some great concepts (his three sons are hip-hop geniuses) that don''t go anywhere (they swear a lot). It''s like the movie itself has a split personality');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (47, 5)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (47, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (47, 8);
@@ -541,7 +541,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (54, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (54, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (54, 54, 32, 21);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('55', 'B00005JMJ4', 'Lost In Translation ', 14.98, 'http://images.amazon.com/images/P/B00005JMJ4.01.MZZZZZZZ.jpg', 'Like a good dream, Sofia Coppola''s Lost in Translation envelops you with an aura of fantastic light, moody sound, head-turning love, and a feeling of déjà vu, even though you''ve probably never been to this neon-fused version of Tokyo. Certainly Bob Harris has not. The 50-ish actor has signed on for big money shooting whiskey ads instead of doing something good for his career or his long-distance family. Jetlagged, helplessly lost with his Japanese-speaking director, and out of sync with the metropolis, Harris (Bill Murray, never better) befriends the married but lovelorn 25-year-old Charlotte (played with heaps of poise by 18-year-old Scarlett Johansson). Even before her photographer husband all but abandons her, she is adrift like Harris but in a total entrapmen!
t of youth. How Charlotte and Bill discover they are soul mates will be cherished for years to come. Written and directed by Coppola (The Virgin Suicides), the film is far more atmospheric than plot-driven: we whiz through Tokyo parties, karaoke bars, and odd nightlife, always ending up in the impossibly posh hotel where the two are staying. The wisps of bittersweet loneliness of Bill and Charlotte are handled smartly and romantically, but unlike modern studio films, this isn''t a May-November fling film. Surely and steadily, the film ends on a much-talked-about grace note, which may burn some, yet awards film lovers who "always had Paris" with another cinematic destination of the heart. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('55', 'B00005JMJ4', 'Lost In Translation ', 14.98, 'http://images.amazon.com/images/P/B00005JMJ4.01.MZZZZZZZ.jpg', 'Like a good dream, Sofia Coppola''s Lost in Translation envelops you with an aura of fantastic light, moody sound, head-turning love, and a feeling of deja vu, even though you''ve probably never been to this neon-fused version of Tokyo. Certainly Bob Harris has not. The 50-ish actor has signed on for big money shooting whiskey ads instead of doing something good for his career or his long-distance family. Jetlagged, helplessly lost with his Japanese-speaking director, and out of sync with the metropolis, Harris (Bill Murray, never better) befriends the married but lovelorn 25-year-old Charlotte (played with heaps of poise by 18-year-old Scarlett Johansson). Even before her photographer husband all but abandons her, she is adrift like Harris but in a total entrapment of youth. Ho!
w Charlotte and Bill discover they are soul mates will be cherished for years to come. Written and directed by Coppola (The Virgin Suicides), the film is far more atmospheric than plot-driven: we whiz through Tokyo parties, karaoke bars, and odd nightlife, always ending up in the impossibly posh hotel where the two are staying. The wisps of bittersweet loneliness of Bill and Charlotte are handled smartly and romantically, but unlike modern studio films, this isn''t a May-November fling film. Surely and steadily, the film ends on a much-talked-about grace note, which may burn some, yet awards film lovers who "always had Paris" with another cinematic destination of the heart. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (55, 6)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (55, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (55, 8);
@@ -571,7 +571,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (58, 13);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (58, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (58, 58, 24, 21);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('59', '0790740796', 'Just Cause', 12.98, 'http://images.amazon.com/images/P/0790740796.01.MZZZZZZZ.jpg', 'Just Cause is a film that relies on phony plot twists and steals openly from any other thriller that it can remember. If there was a drinking game requiring players to drink during every cinematic "homage," you''d be tanked after Just Cause''s first 45 minutes. Take one case of racial injustice, place it in an exotic, exquisitely photographed location (the Florida Everglades), and bring in an outsider, played by a bankable star, to save the day. Make sure nothing appears as it seems. Add a couple of plot twists, some over-the-top character actors (Ed Harris, shamelessly riffing on Hannibal Lecter), stir, and serve. The big name in this case is Sean Connery, who plays a Harvard law professor summoned to the swamps by an apparently innocent death row inmate (Blair Underwood), who swear!
s he didn''t rape and kill that 11-year-old girl. He says he confessed because maverick psycho-cop Tanny Brown (Laurence Fishburne) made him play a solo game of Russian roulette. He says his Serial-killer neighbor on death row (Harris) committed the crime. Connery buys it, the audience buys it, and how could they not? Director Arne Glimcher (who made the lackluster Mambo Kings) coerces everyone with simplistic plot manipulations. Characters are given no depth, and the actors are pawns moved about like pieces on a Clue gameboard. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('59', '0790740796', 'Just Cause', 12.98, 'http://images.amazon.com/images/P/0790740796.01.MZZZZZZZ.jpg', 'Just Cause is a film that relies on phony plot twists and steals openly from any other thriller that it can remember. If there was a drinking game requiring players to drink during every cinematic "homage," you''d be tanked after Just Cause''s first 45 minutes. Take one case of racial injustice, place it in an exotic, exquisitely photographed location (the Florida Everglades), and bring in an outsider, played by a bankable star, to save the day. Make sure nothing appears as it seems. Add a couple of plot twists, some over-the-top character actors (Ed Harris, shamelessly riffing on Hannibal Lecter), stir, and serve. The big name in this case is Sean Connery, who plays a Harvard law professor summoned to the swamps by an apparently innocent death row inmate (Blair Underwood), who swears he !
didn''t rape and kill that 11-year-old girl. He says he confessed because maverick psycho-cop Tanny Brown (Laurence Fishburne) made him play a solo game of Russian roulette. He says his Serial-killer neighbor on death row (Harris) committed the crime. Connery buys it, the audience buys it, and how could they not? Director Arne Glimcher (who made the lackluster Mambo Kings) coerces everyone with simplistic plot manipulations. Characters are given no depth, and the actors are pawns moved about like pieces on a Clue gameboard. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (59, 6)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (59, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (59, 11);
@@ -726,7 +726,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (76, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (76, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (76, 76, 49, 5);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('77', 'B000EMGJ7C', 'The Family Stone ', 29.99, 'http://images.amazon.com/images/P/B000EMGJ7C.01.MZZZZZZZ.jpg', 'For anyone who views holiday gatherings with equal parts joy and dread, The Family Stone offers plenty of comedy to identify with. Writer-director Thomas Bezucha''s slapstick premise begins when Everett (Dermot Mulroney) brings his fiancé Meredith (Sarah Jessica Parker) home to meet his family for Christmas. It''s an instant disaster when parents Sybil (Diane Keaton) and Kelly (Craig T. Nelson) agree with their gay, deaf son Thad (Ty Giordano, who is actually hearing impaired), pot-smoking son Ben (Luke Wilson) and daughters Amy (Rachel McAdams) and Susannah (Elizabeth Reaser) that Meredith is way too uptight to be welcomed into their family. Meredith recruits her sister Julie (Claire Danes) to help her thaw the Stone family cold front, and after building a solid emotional fou!
ndation for his holiday comedy, Bezucha starts to stack the deck with plot developments that, while heartwarming, border on the absurd. You either go with the movie''s flow or you don''t, and with this appealing cast (featuring some really nice work by Keaton, Nelson, Parker and Danes) it''s easy to forgive Bezucha''s unlikely blend of yuletide cheer, petty animosities, and romantic tables turned in the blink of an eye. Toss in a case of terminal illness and you''ve got a sad-happy tearjerker that works in spite of itself. If you don''t recognize at least part of your own holiday clan in The Family Stone, you probably haven''t been paying attention. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('77', 'B000EMGJ7C', 'The Family Stone ', 29.99, 'http://images.amazon.com/images/P/B000EMGJ7C.01.MZZZZZZZ.jpg', 'For anyone who views holiday gatherings with equal parts joy and dread, The Family Stone offers plenty of comedy to identify with. Writer-director Thomas Bezucha''s slapstick premise begins when Everett (Dermot Mulroney) brings his fiance; Meredith (Sarah Jessica Parker) home to meet his family for Christmas. It''s an instant disaster when parents Sybil (Diane Keaton) and Kelly (Craig T. Nelson) agree with their gay, deaf son Thad (Ty Giordano, who is actually hearing impaired), pot-smoking son Ben (Luke Wilson) and daughters Amy (Rachel McAdams) and Susannah (Elizabeth Reaser) that Meredith is way too uptight to be welcomed into their family. Meredith recruits her sister Julie (Claire Danes) to help her thaw the Stone family cold front, and after building a solid emotional foundat!
ion for his holiday comedy, Bezucha starts to stack the deck with plot developments that, while heartwarming, border on the absurd. You either go with the movie''s flow or you don''t, and with this appealing cast (featuring some really nice work by Keaton, Nelson, Parker and Danes) it''s easy to forgive Bezucha''s unlikely blend of yuletide cheer, petty animosities, and romantic tables turned in the blink of an eye. Toss in a case of terminal illness and you''ve got a sad-happy tearjerker that works in spite of itself. If you don''t recognize at least part of your own holiday clan in The Family Stone, you probably haven''t been paying attention. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (77, 9)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (77, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (77, 8);
@@ -751,7 +751,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (79, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (79, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (79, 79, 21, 10);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('80', 'B00005JKWJ', 'Blade II ', 26.98, 'http://images.amazon.com/images/P/B00005JKWJ.01.MZZZZZZZ.jpg', 'Aptly described by critic Roger Ebert as "a vomitorium of viscera," Blade II takes the express route to sequel success. So if you enjoyed Blade, you''ll probably drool over this monster mash, which is anything but boring. Set (and filmed) in Prague, the plot finds a new crop of "Reaper" vampires threatening to implement a viral breeding program, and they''re nearly impervious to attacks by Blade (Wesley Snipes), his now-revived mentor Whistler (Kris Kristofferson), and a small army of "normal" vampires who routinely combust in a constant conflagration of spectacular special effects. It''s up to Blade to conquer the über-vamps, and both Snipes and director Guillermo del Toro (Mimic) serve up a nonstop smorgasbord of intensely choreographed action, creepy makeup, and graphic ultraviolen!
ce. It''s sadistic, juvenile, numbing, and');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('80', 'B00005JKWJ', 'Blade II ', 26.98, 'http://images.amazon.com/images/P/B00005JKWJ.01.MZZZZZZZ.jpg', 'Aptly described by critic Roger Ebert as "a vomitorium of viscera," Blade II takes the express route to sequel success. So if you enjoyed Blade, you''ll probably drool over this monster mash, which is anything but boring. Set (and filmed) in Prague, the plot finds a new crop of "Reaper" vampires threatening to implement a viral breeding program, and they''re nearly impervious to attacks by Blade (Wesley Snipes), his now-revived mentor Whistler (Kris Kristofferson), and a small army of "normal" vampires who routinely combust in a constant conflagration of spectacular special effects. It''s up to Blade to conquer the vamps, and both Snipes and director Guillermo del Toro (Mimic) serve up a nonstop smorgasbord of intensely choreographed action, creepy makeup, and graphic ultraviolence. It''s !
sadistic, juvenile, numbing, and');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (80, 9)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (80, 21)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (80, 27);
@@ -775,7 +775,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (82, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (82, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (82, 82, 32, 10);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('83', 'B00007ELDF', 'Fear and Loathing in Las Vegas - Criterion Collection', 39.95, 'http://images.amazon.com/images/P/B00007ELDF.01.MZZZZZZZ.jpg', 'The original cowriter and director of Fear and Loathing in Las Vegas was Alex Cox, whose earlier film Sid and Nancy suggests that Cox could have been a perfect match in filming Hunter S. Thompson''s psychotropic masterpiece of "gonzo" journalism. Unfortunately Cox departed due to the usual "creative differences," and this ill-fated adaptation was thrust upon Terry Gilliam, whose formidable gifts as a visionary filmmaker were squandered on the seemingly unfilmable elements of Thompson''s ether-fogged narrative. The result is a one-joke movie without the joke');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('83', 'B00007ELDF', 'Fear and Loathing in Las Vegas - Criterion Collection', 39.95, 'http://images.amazon.com/images/P/B00007ELDF.01.MZZZZZZZ.jpg', 'The original cowriter and director of Fear and Loathing in Las Vegas was Alex Cox, whose earlier film Sid and Nancy suggests that Cox could have been a perfect match in filming Hunter S. Thompson''s psychotropic masterpiece of "gonzo" journalism. Unfortunately Cox departed due to the usual "creative differences," and this ill-fated adaptation was thrust upon Terry Gilliam, whose formidable gifts as a visionary filmmaker were squandered on the seemingly unfilmable elements of Thompson''s ether-fogged narrative. The result is a one-joke movie without the joke');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (83, 10)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (83, 37)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (83, 7);
@@ -806,7 +806,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (86, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (86, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (86, 86, 80, 7);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('87', '0783229526', 'Fear and Loathing in Las Vegas', 26.98, 'http://images.amazon.com/images/P/0783229526.01.MZZZZZZZ.jpg', 'The original cowriter and director of Fear and Loathing in Las Vegas was Alex Cox, whose earlier film Sid and Nancy suggests that Cox could have been a perfect match in filming Hunter S. Thompson''s psychotropic masterpiece of "gonzo" journalism. Unfortunately Cox departed due to the usual "creative differences," and this ill-fated adaptation was thrust upon Terry Gilliam, whose formidable gifts as a visionary filmmaker were squandered on the seemingly unfilmable elements of Thompson''s ether-fogged narrative. The result is a one-joke movie without the joke');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('87', '0783229526', 'Fear and Loathing in Las Vegas', 26.98, 'http://images.amazon.com/images/P/0783229526.01.MZZZZZZZ.jpg', 'The original cowriter and director of Fear and Loathing in Las Vegas was Alex Cox, whose earlier film Sid and Nancy suggests that Cox could have been a perfect match in filming Hunter S. Thompson''s psychotropic masterpiece of "gonzo" journalism. Unfortunately Cox departed due to the usual "creative differences," and this ill-fated adaptation was thrust upon Terry Gilliam, whose formidable gifts as a visionary filmmaker were squandered on the seemingly unfilmable elements of Thompson''s ether-fogged narrative. The result is a one-joke movie without the joke');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (87, 10)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (87, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (87, 10);
@@ -836,7 +836,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (90, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (90, 17);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (90, 90, 12, 13);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('91', 'B00003CXCI', 'Say Anything', 14.98, 'http://images.amazon.com/images/P/B00003CXCI.01.MZZZZZZZ.jpg', 'Seven years after he earned his first screen credit as the writer of Fast Times at Ridgemont High, former Rolling Stone writer Cameron Crowe made his directorial debut with this acclaimed romantic comedy starring John Cusack and Ione Skye as unlikely lovers on the cusp of adulthood. The casting is perfect, and Crowe''s rookie direction is appropriately unobtrusive, no doubt influenced by his actor-loving, Oscar®-winning mentor, James L. Brooks. But the real strength of Crowe''s work is his exceptional writing, his timely grasp of contemporary rhythms and language (he''s frequently called "the voice of a generation"), and the rich humor and depth of his fully developed characters. In Say Anything... Cusack and Skye play recent high school graduates enjoying one final summer before le!
aping into a lifetime of adult responsibilities. Lloyd (Cusack) is an aspiring kickboxer with no definite plans; Diane (Skye) is a valedictorian with intentions to further her education in Europe. Together they find unlikely bliss, but there''s also turbulence when Diane''s father (John Mahoney)');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('91', 'B00003CXCI', 'Say Anything', 14.98, 'http://images.amazon.com/images/P/B00003CXCI.01.MZZZZZZZ.jpg', 'Seven years after he earned his first screen credit as the writer of Fast Times at Ridgemont High, former Rolling Stone writer Cameron Crowe made his directorial debut with this acclaimed romantic comedy starring John Cusack and Ione Skye as unlikely lovers on the cusp of adulthood. The casting is perfect, and Crowe''s rookie direction is appropriately unobtrusive, no doubt influenced by his actor-loving, Oscar-winning mentor, James L. Brooks. But the real strength of Crowe''s work is his exceptional writing, his timely grasp of contemporary rhythms and language (he''s frequently called "the voice of a generation"), and the rich humor and depth of his fully developed characters. In Say Anything... Cusack and Skye play recent high school graduates enjoying one final summer before leaping!
into a lifetime of adult responsibilities. Lloyd (Cusack) is an aspiring kickboxer with no definite plans; Diane (Skye) is a valedictorian with intentions to further her education in Europe. Together they find unlikely bliss, but there''s also turbulence when Diane''s father (John Mahoney)');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (91, 11)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (91, 8);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (91, 9);
@@ -871,7 +871,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (94, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (94, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (94, 94, 87, 1);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('95', 'B000DZ7YN8', 'The Ice Harvest ', 29.98, 'http://images.amazon.com/images/P/B000DZ7YN8.01.MZZZZZZZ.jpg', 'Holiday movies don’t get much darker, or more darkly humorous, than The Ice Harvest, an offbeat comedy that defies expectations. The involvement of director Harold Ramis might lead some to expect a straight-up comedy like Groundhog Day or Analyze This, but despite Ramis’s fine and atypically subdued work here, it’s the writers (Robert Benton and Richard Russo) who put a stronger stamp on their adaptation of the novel by Scott Phillips. Benton and Russo previously collaborated on Nobody’s Fool and Twilight (with Benton also directing), and those films are similar in tone and spirit to this quirky, modern-day film noir, set on a freezing Christmas Eve in Wichita, Kansas, where mob lawyer Charlie Arglist (John Cusack) has a lot on his mind. He’s just stolen $2 !
million from his boss (Randy Quaid), he can’t trust his partner Vic (Billy Bob Thornton), he’s secretly in love with the manager (Connie Nielsen) of the strip bar he owns, and his best friend (Oliver Platt, giving yet another terrific performance) is married to his ex-wife. Before the night’s over, several murders will complicate matters even further, and throughout it all, The Ice Harvest is anchored by Cusack’s good-natured presence in a bad-natured story that dares to combine double-crosses and bloodshed with elusive yuletide cheer. It’s a strange but oddly appealing combination, not for all tastes but refreshing for that very same reason. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('95', 'B000DZ7YN8', 'The Ice Harvest ', 29.98, 'http://images.amazon.com/images/P/B000DZ7YN8.01.MZZZZZZZ.jpg', 'Holiday movies don''t get much darker, or more darkly humorous, than The Ice Harvest, an offbeat comedy that defies expectations. The involvement of director Harold Ramis might lead some to expect a straight-up comedy like Groundhog Day or Analyze This, but despite Ramis''s fine and atypically subdued work here, it''s the writers (Robert Benton and Richard Russo) who put a stronger stamp on their adaptation of the novel by Scott Phillips. Benton and Russo previously collaborated on Nobody''s Fool and Twilight (with Benton also directing), and those films are similar in tone and spirit to this quirky, modern-day film noir, set on a freezing Christmas Eve in Wichita, Kansas, where mob lawyer Charlie Arglist (John Cusack) has a lot on his mind. He''s just stolen $2 million from his bos!
s (Randy Quaid), he can''t trust his partner Vic (Billy Bob Thornton), he''s secretly in love with the manager (Connie Nielsen) of the strip bar he owns, and his best friend (Oliver Platt, giving yet another terrific performance) is married to his ex-wife. Before the night''s over, several murders will complicate matters even further, and throughout it all, The Ice Harvest is anchored by Cusack''s good-natured presence in a bad-natured story that dares to combine double-crosses and bloodshed with elusive yuletide cheer. It''s a strange but oddly appealing combination, not for all tastes but refreshing for that very same reason. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (95, 11)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (95, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (95, 8);
@@ -1011,7 +1011,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (112, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (112, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (112, 112, 61, 24);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('113', 'B00003CXC9', 'The Remains of the Day ', 29.95, 'http://images.amazon.com/images/P/B00003CXC9.01.MZZZZZZZ.jpg', 'This excellent film is probably best described as subtle elegance. Framed in the present, the movie deals with the lives inside an English country home just prior to World War II. Reunited with the filmmakers from Howards End are Emma Thompson as Miss Kenton, the head housekeeper, and Anthony Hopkins as Stevens, the impeccable butler. The bittersweet story centers on Stevens and his dedication to his master, Lord Darlington (a suitably officious and slyly pompous James Fox). Stevens summarizes: "I don''t believe a man can consider himself fully content until he has done all he can to be of service to his employer." Enveloping Stevens''s world are the pending war with Germany, Darlington''s horribly misguided interests in said war, and, most effectively, his relationsh!
ip with Miss Kenton. Stevens is the very essence of repression, but as played by Hopkins he is neither piteous nor self-righteous. Like his master, Stevens becomes misguided in his loyalties, although his is an emotional deprivation, possibly condemning him to lifelong regret. There''s so much going on in this film, and yet the action is skillfully depicted through understanding and knowing glances, through emotions expressed only through eye contact. Like other Merchant-Ivory-Ruth Prawer Jhabvala collaborations, this film is sumptuous to look at, capturing the period effectively and affectingly. Jhabvala respectfully adapts from the Kazuo Ishiguro novel. Excellent in supporting roles are Christopher Reeve, Ben Chaplin, and Hugh Grant. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('113', 'B00003CXC9', 'The Remains of the Day ', 29.95, 'http://images.amazon.com/images/P/B00003CXC9.01.MZZZZZZZ.jpg', 'This excellent film is probably best described as subtle elegance. Framed in the present, the movie deals with the lives inside an English country home just prior to World War II. Reunited with the filmmakers from Howards End are Emma Thompson as Miss Kenton, the head housekeeper, and Anthony Hopkins as Stevens, the impeccable butler. The bittersweet story centers on Stevens and his dedication to his master, Lord Darlington (a suitably officious and slyly pompous James Fox). Stevens summarizes: "I don''t believe a man can consider himself fully content until he has done all he can to be of service to his employer." Enveloping Stevens''s world are the pending war with Germany, Darlington''s horribly misguided interests in said war, and, most effectively, his relationship wi!
th Miss Kenton. Stevens is the very essence of repression, but as played by Hopkins he is neither piteous nor self-righteous. Like his master, Stevens becomes misguided in his loyalties, although his is an emotional deprivation, possibly condemning him to lifelong regret. There''s so much going on in this film, and yet the action is skillfully depicted through understanding and knowing glances, through emotions expressed only through eye contact. Like other Merchant-Ivory-Ruth Prawer Jhabvala collaborations, this film is sumptuous to look at, capturing the period effectively and affectingly. Jhabvala respectfully adapts from the Kazuo Ishiguro novel. Excellent in supporting roles are Christopher Reeve, Ben Chaplin, and Hugh Grant. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (113, 14)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (113, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (113, 11);
@@ -1133,7 +1133,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (128, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (128, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (128, 128, 37, 11);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('129', 'B000CNESJO', 'Elizabethtown ', 29.95, 'http://images.amazon.com/images/P/B000CNESJO.01.MZZZZZZZ.jpg', 'Elizabethtown has all of the elements of a great Cameron Crowe movie, but none of the Cameron Crowe vision that made Almost Famous work. It''s mostly a series of sweet moments, each capped with the right song at the right time; in fact, the soundtrack is the real star of the movie, and the right song is all there is to piece together a film that is much less than the sum of its parts. From the start of Elizabethtown, big contrasts are evoked: death and life, success and failure are side by side, so we''re told. When the movie starts, Drew Baylor (Orlando Bloom) is experiencing failure and death in spades: the shoe he spent eight years designing for Mercury (a thinly-veiled copy of Nike) has been recalled, costing his company $972 million dollars. On the verge of a suicide attempt,!
he learns his father has died, and Drew flies to Kentucky to retrieve the body to Oregon for cremation. On the red-eye to Louisville he meets Claire Colburn (Kirsten Dunst), a perky flight att''ndant with a charming flair for cute lines ("I''m impossible to forget, but I’m hard to remember," she chirps). Once in Elizabethtown, Drew tries to plan a memorial while dealing with relatives who have their own agenda in addition to his manic family back in Oregon, all while facing the reality that in a few days he''ll be known nationally as one of his industry''s most legendary failures. Yet still he manages to connect with Claire on an all-night cell phone conversation');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('129', 'B000CNESJO', 'Elizabethtown ', 29.95, 'http://images.amazon.com/images/P/B000CNESJO.01.MZZZZZZZ.jpg', 'Elizabethtown has all of the elements of a great Cameron Crowe movie, but none of the Cameron Crowe vision that made Almost Famous work. It''s mostly a series of sweet moments, each capped with the right song at the right time; in fact, the soundtrack is the real star of the movie, and the right song is all there is to piece together a film that is much less than the sum of its parts. From the start of Elizabethtown, big contrasts are evoked: death and life, success and failure are side by side, so we''re told. When the movie starts, Drew Baylor (Orlando Bloom) is experiencing failure and death in spades: the shoe he spent eight years designing for Mercury (a thinly-veiled copy of Nike) has been recalled, costing his company $972 million dollars. On the verge of a suicide attempt,!
he learns his father has died, and Drew flies to Kentucky to retrieve the body to Oregon for cremation. On the red-eye to Louisville he meets Claire Colburn (Kirsten Dunst), a perky flight att''ndant with a charming flair for cute lines ("I''m impossible to forget, but I''m hard to remember," she chirps). Once in Elizabethtown, Drew tries to plan a memorial while dealing with relatives who have their own agenda in addition to his manic family back in Oregon, all while facing the reality that in a few days he''ll be known nationally as one of his industry''s most legendary failures. Yet still he manages to connect with Claire on an all-night cell phone conversation');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (129, 16)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (129, 56)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (129, 2);
@@ -1158,7 +1158,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (131, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (131, 16);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (131, 131, 15, 24);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('132', 'B000021Y7E', 'Dick', 19.94, 'http://images.amazon.com/images/P/B000021Y7E.01.MZZZZZZZ.jpg', 'So who exactly was Deep Throat, that all-important source who helped Bob Woodward and Carl Bernstein bust open the Watergate scandal? Well, according to this thoroughly funny, keenly smart comedy from director Andrew Fleming (The Craft), it was two sweetly daft teenage girls named Betsy and Arlene. Taking the history and figures from Watergate and running gleefully and sacrilegiously amok, Dick offers up a hilarious what-if scenario that takes the Nixon administration''s downfall from grave tragedy to hilarious farce. When Betsy (Kirsten Dunst) and Arlene (Michelle Williams) run into a shady figure in the stairwell of Arlene''s Watergate apartment building, little do they know they''ve stumbled upon G. Gordon Liddy (Harry Shearer) on the night of the Democratic National Headquarters break!
-in. Later, on a White House field trip, they wind up meeting with Nixon himself (Dan Hedaya), who, to ensure their silence, decides to make them official White House dog walkers and "secret youth advisors." Of course, Betsy and Arlene soon find out their idol has feet of clay, and ultimately decide to aid "radical muckraking journalists" (and queasy rivals) Woodward (Will Ferrell) and Bernstein (Bruce McCullough) in their investigation. Fleming and cowriter Sheryl Longin''s enfolding of the Watergate scandal is extremely clever and inspired, from Arlene''s 18-and-a-half-minute declaration of love on Nixon''s tape recorder to the Hello Dolly cookies (laced with a certain herbal stimulant) that help bring about the U.S.-Soviet accord. And after all the angsty-serious portraits of Watergate, it''s bliss to see the prime players sent up mercilessly; in addition to Shearer, the cast boasts Dave Foley (Erlichman), Jim Breuer (John Dean), Saul Rubinek (Kissinger), and Ana Gasteye!
r (Rosemary Woods), all in fine form. Hedaya''s Nixon, dead-on but nev
er parodic, is an Oscar-worthy comic turn, and Dunst and Williams invest their characters with affection and humor; the success of the film lies in the way these talented actresses make us laugh with Betsy and Arlene, never at them. Don''t be put off by the teen sheen on this comedy');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('132', 'B000021Y7E', 'Dick', 19.94, 'http://images.amazon.com/images/P/B000021Y7E.01.MZZZZZZZ.jpg', 'So who exactly was Deep Throat, that all-important source who helped Bob Woodward and Carl Bernstein bust open the Watergate scandal? Well, according to this thoroughly funny, keenly smart comedy from director Andrew Fleming (The Craft), it was two sweetly daft teenage girls named Betsy and Arlene. Taking the history and figures from Watergate and running gleefully and sacrilegiously amok, Dick offers up a hilarious what-if scenario that takes the Nixon administration''s downfall from grave tragedy to hilarious farce. When Betsy (Kirsten Dunst) and Arlene (Michelle Williams) run into a shady figure in the stairwell of Arlene''s Watergate apartment building, little do they know they''ve stumbled upon G. Gordon Liddy (Harry Shearer) on the night of the Democratic National Headquarters break-in. !
Later, on a White House field trip, they wind up meeting with Nixon himself (Dan Hedaya), who, to ensure their silence, decides to make them official White House dog walkers and "secret youth advisors." Of course, Betsy and Arlene soon find out their idol has feet of clay, and ultimately decide to aid "radical muckraking journalists" (and queasy rivals) Woodward (Will Ferrell) and Bernstein (Bruce McCullough) in their investigation. Fleming and cowriter Sheryl Longin''s enfolding of the Watergate scandal is extremely clever and inspired, from Arlene''s 18-and-a-half-minute declaration of love on Nixon''s tape recorder to the Hello Dolly cookies (laced with a certain herbal stimulant) that help bring about the U.S.-Soviet accord. And after all the angsty-serious portraits of Watergate, it''s bliss to see the prime players sent up mercilessly; in addition to Shearer, the cast boasts Dave Foley (Erlichman), Jim Breuer (John Dean), Saul Rubinek (Kissinger), and Ana Gasteyer (Ro!
semary Woods), all in fine form. Hedaya''s Nixon, dead-on but never pa
rodic, is an Oscar-worthy comic turn, and Dunst and Williams invest their characters with affection and humor; the success of the film lies in the way these talented actresses make us laugh with Betsy and Arlene, never at them. Don''t be put off by the teen sheen on this comedy');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (132, 16)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (132, 8);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (132, 2);
@@ -1218,7 +1218,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (139, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (139, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (139, 139, 53, 3);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('140', 'B000FBNG1O', 'Green Street Hooligans', 27.98, 'http://images.amazon.com/images/P/B000FBNG1O.01.MZZZZZZZ.jpg', 'After the Lord of the Rings trilogy, Elijah Wood could''ve opted for further big budget epics, but took a sharp left turn with this better-than-average B-movie. Released just after Everything is Illuminated, another offbeat entry, Wood plays journalism student Matt Buckner. In the prologue, he''s expelled from Harvard when his over-privileged roommate sets him up to take the fall for his own misdeeds. With nowhere to go, Matt decides to visit his sister, Shannon (Claire Forlani), in London. He''s already got a chip on his shoulder when he falls under the sway of Shannon''s brother-in-law, Pete (Charlie Hunnam), head of West Ham''s football "firm," the Green Street Elite. Matt soon gets caught up in their thuggish antics—to tragic effect. In her feature debut, German-born!
Lexi Alexander makes a mostly convincing case for the attractions of violence to the emotionally vulnerable, as opposed to the emotionally numb pugilists of the more satirical Fight Club. Unlike David Fincher (by way of Chuck Palahniuk), she plays it straight, except for the stylized fight sequences. Consequently, humor is in short supply, but the young Brit cast, especially Leo Gregory as the surly Bovver, is charismatic and Wood makes his character as believable as possible, i.e. he may seem miscast, but that''s the point. Although there''s no (direct) correlation between the two, Green Street makes a fine taster for Bill Buford''s Among the Thugs, the ultimate dissection of the hooligan mentality. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('140', 'B000FBNG1O', 'Green Street Hooligans', 27.98, 'http://images.amazon.com/images/P/B000FBNG1O.01.MZZZZZZZ.jpg', 'After the Lord of the Rings trilogy, Elijah Wood could''ve opted for further big budget epics, but took a sharp left turn with this better-than-average B-movie. Released just after Everything is Illuminated, another offbeat entry, Wood plays journalism student Matt Buckner. In the prologue, he''s expelled from Harvard when his over-privileged roommate sets him up to take the fall for his own misdeeds. With nowhere to go, Matt decides to visit his sister, Shannon (Claire Forlani), in London. He''s already got a chip on his shoulder when he falls under the sway of Shannon''s brother-in-law, Pete (Charlie Hunnam), head of West Ham''s football "firm," the Green Street Elite. Matt soon gets caught up in their thuggish antics to tragic effect. In her feature debut, German-born Lexi!
Alexander makes a mostly convincing case for the attractions of violence to the emotionally vulnerable, as opposed to the emotionally numb pugilists of the more satirical Fight Club. Unlike David Fincher (by way of Chuck Palahniuk), she plays it straight, except for the stylized fight sequences. Consequently, humor is in short supply, but the young Brit cast, especially Leo Gregory as the surly Bovver, is charismatic and Wood makes his character as believable as possible, i.e. he may seem miscast, but that''s the point. Although there''s no (direct) correlation between the two, Green Street makes a fine taster for Bill Buford''s Among the Thugs, the ultimate dissection of the hooligan mentality. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (140, 17)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (140, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (140, 15);
@@ -1266,13 +1266,13 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (146, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (146, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (146, 146, 10, 0);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('147', 'B00003OST5', 'Othello', 19.98, 'http://images.amazon.com/images/P/B00003OST5.01.MZZZZZZZ.jpg', 'Oliver Parker, a stage and film actor (Hellraiser), made his directorial debut with this scaled-back version of Shakespeare''s play about the paranoid Moor, Othello (Laurence Fishburne), and his manipulative friend, Iago (Kenneth Branagh). Parker gets the story so lean he starts running a little short on the author''s subtext, and if it''s possible to overemphasize the banality of Iago''s scheming and Othello''s malleability, he does so. The director throws out what is universal in the story and makes it all seem merely ordinary, human, and unfortunate, which is the opposite of what watching Shakespeare should be. In the end, it''s hard to care what these characters have done to one another. Branagh''s Iago is a little flat and unfocused, while Fishburne is excellent as a quieter Othello th!
an we''re accustomed to. With Irène Jacob (Red) as Desdemona. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('147', 'B00003OST5', 'Othello', 19.98, 'http://images.amazon.com/images/P/B00003OST5.01.MZZZZZZZ.jpg', 'Oliver Parker, a stage and film actor (Hellraiser), made his directorial debut with this scaled-back version of Shakespeare''s play about the paranoid Moor, Othello (Laurence Fishburne), and his manipulative friend, Iago (Kenneth Branagh). Parker gets the story so lean he starts running a little short on the author''s subtext, and if it''s possible to overemphasize the banality of Iago''s scheming and Othello''s malleability, he does so. The director throws out what is universal in the story and makes it all seem merely ordinary, human, and unfortunate, which is the opposite of what watching Shakespeare should be. In the end, it''s hard to care what these characters have done to one another. Branagh''s Iago is a little flat and unfocused, while Fishburne is excellent as a quieter Othello th!
an we''re accustomed to. With Irene Jacob (Red) as Desdemona. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (147, 18)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (147, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (147, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (147, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (147, 147, 8, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('148', 'B000035Z1Z', 'French Kiss', 9.98, 'http://images.amazon.com/images/P/B000035Z1Z.01.MZZZZZZZ.jpg', 'Meg Ryan emerges bloodied but unbowed from this botched comedy by Lawrence Kasdan (The Big Chill). Ryan plays a woman whose fiancé (Timothy Hutton) leaves her for a Parisian beauty. She jets over to the City of Lights to fight for her man, but an incapacitating fear of flying forces her to seek help from a fellow passenger, a French thief played by Kevin Kline, who then tutors her in the ways of getting her beau back. Kasdan seems incapable of pacing the story, let alone getting a firm grip on its comic tone and intentions. The production sputters and regroups and stalls repeatedly, forcing Ryan, particularly, to find the boundaries of her own screwball performance. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('148', 'B000035Z1Z', 'French Kiss', 9.98, 'http://images.amazon.com/images/P/B000035Z1Z.01.MZZZZZZZ.jpg', 'Meg Ryan emerges bloodied but unbowed from this botched comedy by Lawrence Kasdan (The Big Chill). Ryan plays a woman whose fiance (Timothy Hutton) leaves her for a Parisian beauty. She jets over to the City of Lights to fight for her man, but an incapacitating fear of flying forces her to seek help from a fellow passenger, a French thief played by Kevin Kline, who then tutors her in the ways of getting her beau back. Kasdan seems incapable of pacing the story, let alone getting a firm grip on its comic tone and intentions. The production sputters and regroups and stalls repeatedly, forcing Ryan, particularly, to find the boundaries of her own screwball performance. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (148, 19)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (148, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (148, 8);
@@ -1346,7 +1346,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (156, 36);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (156, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (156, 156, 94, 24);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('157', 'B00005LOKQ', 'The Princess Bride ', 14.94, 'http://images.amazon.com/images/P/B00005LOKQ.01.MZZZZZZZ.jpg', 'Screenwriter William Goldman''s novel The Princess Bride earned its own loyal audience on the strength of its narrative voice and its gently satirical, hyperbolic spin on swashbuckled adventure that seemed almost purely literary. For all its derring-do and vivid over-the-top characters, the book''s joy was dictated as much by the deadpan tone of its narrator and a winking acknowledgement of the clichés being sent up. Miraculously, director Rob Reiner and Goldman himself managed to visualize this romantic fable while keeping that external voice largely intact: using a storytelling framework, avuncular Grandpa (Peter Falk) gradually seduces his skeptical grandson (Fred Savage) into the absurd, irresistible melodrama of the title story. And what a story: a lowly stable boy!
, Westley (Cary Elwes), pledges his love to the beautiful Buttercup (Robin Wright), only to be abducted and reportedly killed by pirates while Buttercup is betrothed to the evil Prince Humperdinck. Even as Buttercup herself is kidnapped by a giant, a scheming criminal mastermind, and a master Spanish swordsman, a mysterious masked pirate (could it be Westley?) follows in pursuit. As they sail toward the Cliffs of Insanity... The wild and woolly arcs of the story, the sudden twists of fate, and, above all, the cartoon-scaled characters all work because of Goldman''s very funny script, Reiner''s confident direction, and a terrific cast. Elwes and Wright, both sporting their best English accents, juggle romantic fervor and physical slapstick effortlessly, while supporting roles boast Mandy Patinkin (the swordsman Inigo Montoya), Wallace Shawn (the incredulous schemer Vizzini), and Christopher Guest (evil Count Rugen) with brief but funny cameos from Billy Crystal, Carol Kan!
e, and Peter Cook. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('157', 'B00005LOKQ', 'The Princess Bride ', 14.94, 'http://images.amazon.com/images/P/B00005LOKQ.01.MZZZZZZZ.jpg', 'Screenwriter William Goldman''s novel The Princess Bride earned its own loyal audience on the strength of its narrative voice and its gently satirical, hyperbolic spin on swashbuckled adventure that seemed almost purely literary. For all its derring-do and vivid over-the-top characters, the book''s joy was dictated as much by the deadpan tone of its narrator and a winking acknowledgement of the cliches being sent up. Miraculously, director Rob Reiner and Goldman himself managed to visualize this romantic fable while keeping that external voice largely intact: using a storytelling framework, avuncular Grandpa (Peter Falk) gradually seduces his skeptical grandson (Fred Savage) into the absurd, irresistible melodrama of the title story. And what a story: a lowly stable boy, Wes!
tley (Cary Elwes), pledges his love to the beautiful Buttercup (Robin Wright), only to be abducted and reportedly killed by pirates while Buttercup is betrothed to the evil Prince Humperdinck. Even as Buttercup herself is kidnapped by a giant, a scheming criminal mastermind, and a master Spanish swordsman, a mysterious masked pirate (could it be Westley?) follows in pursuit. As they sail toward the Cliffs of Insanity... The wild and woolly arcs of the story, the sudden twists of fate, and, above all, the cartoon-scaled characters all work because of Goldman''s very funny script, Reiner''s confident direction, and a terrific cast. Elwes and Wright, both sporting their best English accents, juggle romantic fervor and physical slapstick effortlessly, while supporting roles boast Mandy Patinkin (the swordsman Inigo Montoya), Wallace Shawn (the incredulous schemer Vizzini), and Christopher Guest (evil Count Rugen) with brief but funny cameos from Billy Crystal, Carol Kane, an!
d Peter Cook. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (157, 20)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (157, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (157, 8);
@@ -1442,7 +1442,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (168, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (168, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (168, 168, 19, 3);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('169', 'B00005JLXH', 'Star Wars, Episode III - Revenge of the Sith ', 29.98, 'http://images.amazon.com/images/P/B00005JLXH.01.MZZZZZZZ.jpg', ' Ending the most popular film epic in history, Star Wars: Episode III, Revenge of the Sith is an exciting, uneven, but ultimately satisfying journey. Picking up the action from Episode II, Attack of the Clones as well as the animated Clone Wars series, Jedi Master Obi-Wan Kenobi (Ewan McGregor) and his apprentice, Anakin Skywalker (Hayden Christensen), pursue General Grievous into space after the droid kidnapped Supreme Chancellor Palpatine (Ian McDiarmid). <table align=left cellpadding="6" cellspacing="0"> <tr><td align="center"> <img src="http://images.amazon.com/images/G/01/video/stills/star-wars/sw3-famtree.m..." border=0 align=top> <br> <span class="tiny">The Star Wars Family Tree (click for larger image) </span> </td></tr> </table> It''s just!
the latest maneuver in the ongoing Clone Wars between the Republic and the Separatist forces led by former Jedi turned Sith Lord Count Dooku (Christopher Lee). On another front, Master Yoda (voiced by Frank Oz) leads the Republic''s clone troops against a droid attack on the Wookiee homeworld of Kashyyyk. All this is in the first half of Episode III, which feels a lot like Episodes I and II. That means spectacular scenery, dazzling dogfights in space, a new fearsome villain (the CGI-created Grievous can''t match up to either Darth Maul or the original Darth Vader, though), lightsaber duels, groan-worthy romantic dialogue, goofy humor (but at least it''s left to the droids instead of Jar-Jar Binks), and hordes of faceless clone troopers fighting hordes of faceless battle droids. But then it all changes. <table align=right cellpadding="6" cellspacing="0"> <tr><td align="center"> <img src="http://images.amazon.com/images/G/01/dvd/sw2-swtimeline-fp-us.thumb.jpg" border=0 al!
ign=top> <br> <span class="tiny">Star Wars Time Line (click for larger
image) </span> </td></tr> </table> After setting up characters and situations for the first two and a half movies, Episode III finally comes to life. The Sith Lord in hiding unleashes his long-simmering plot to take over the Republic, and an integral part of that plan is to turn Anakin away from the Jedi and toward the Dark Side of the Force. Unless you''ve been living under a rock the last 10 years, you know that Anakin will transform into the dreaded Darth Vader and face an ultimate showdown with his mentor, but that doesn''t matter. In fact, a great part of the fun is knowing where things will wind up but finding out how they''ll get there. The end of this prequel trilogy also should inspire fans to want to see the original movies again, but this time not out of frustration at the new ones. Rather, because Episode III is a beginning as well as an end, it will trigger fond memories as it ties up threads to the originals in tidy little ways. But best of all, it seem!
s like for the first time we actually care about what happens and who it happens to. Episode III is easily the best of the new trilogy');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('169', 'B00005JLXH', 'Star Wars, Episode III - Revenge of the Sith ', 29.98, 'http://images.amazon.com/images/P/B00005JLXH.01.MZZZZZZZ.jpg', ' Ending the most popular film epic in history, Star Wars: Episode III, Revenge of the Sith is an exciting, uneven, but ultimately satisfying journey. Picking up the action from Episode II, Attack of the Clones as well as the animated Clone Wars series, Jedi Master Obi-Wan Kenobi (Ewan McGregor) and his apprentice, Anakin Skywalker (Hayden Christensen), pursue General Grievous into space after the droid kidnapped Supreme Chancellor Palpatine (Ian McDiarmid). It''s just the latest maneuver in the ongoing Clone Wars between the Republic and the Separatist forces led by former Jedi turned Sith Lord Count Dooku (Christopher Lee). On another front, Master Yoda (voiced by Frank Oz) leads the Republic''s clone troops against a droid attack on the Wookiee ho!
meworld of Kashyyyk. All this is in the first half of Episode III, which feels a lot like Episodes I and II. That means spectacular scenery, dazzling dogfights in space, a new fearsome villain (the CGI-created Grievous can''t match up to either Darth Maul or the original Darth Vader, though), lightsaber duels, groan-worthy romantic dialogue, goofy humor (but at least it''s left to the droids instead of Jar-Jar Binks), and hordes of faceless clone troopers fighting hordes of faceless battle droids. But then it all changes. After setting up characters and situations for the first two and a half movies, Episode III finally comes to life. The Sith Lord in hiding unleashes his long-simmering plot to take over the Republic, and an integral part of that plan is to turn Anakin away from the Jedi and toward the Dark Side of the Force. Unless you''ve been living under a rock the last 10 years, you know that Anakin will transform into the dreaded Darth Vader and face an ultimat!
e showdown with his mentor, but that doesn''t matter. In fact, a grea
t part of the fun is knowing where things will wind up but finding out how they''ll get there. The end of this prequel trilogy also should inspire fans to want to see the original movies again, but this time not out of frustration at the new ones. Rather, because Episode III is a beginning as well as an end, it will trigger fond memories as it ties up threads to the originals in tidy little ways. But best of all, it seems like for the first time we actually care about what happens and who it happens to. Episode III is easily the best of the new trilogy');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (169, 22)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (169, 23)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (169, 25);
@@ -1475,14 +1475,14 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (173, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (173, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (173, 173, 94, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('174', 'B00003CX5P', 'Star Wars - Episode I, The Phantom Menace ', 19.98, 'http://images.amazon.com/images/P/B00003CX5P.01.MZZZZZZZ.jpg', '"I have a bad feeling about this," says the young Obi-Wan Kenobi (played by Ewan McGregor) in Star Wars: Episode I, The Phantom Menace as he steps off a spaceship and into the most anticipated cinematic event... well, ever. He might as well be speaking for the legions of fans of the original episodes in the Star Wars saga who can''t help but secretly ask themselves: Sure, this is Star Wars, but is it my Star Wars? The original elevated moviegoers'' expectations so high that it would have been impossible for any subsequent film to meet them. And as with all the Star Wars movies, The Phantom Menace features inexplicable plot twists, a fistful of loose threads, and some cheek-chewing dialogue. Han Solo''s swagger is sorely missed, as is the pervadin!
g menace of heavy-breather Darth Vader. There is still way too much quasi-mystical mumbo jumbo, and some of what was fresh about Star Wars 22 years earlier feels formulaic. Yet there''s much to admire. The special effects are stupendous; three worlds are populated with a mélange of creatures, flora, and horizons rendered in absolute detail. The action and battle scenes are breathtaking in their complexity. And one particular sequence of the film');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('174', 'B00003CX5P', 'Star Wars - Episode I, The Phantom Menace ', 19.98, 'http://images.amazon.com/images/P/B00003CX5P.01.MZZZZZZZ.jpg', '"I have a bad feeling about this," says the young Obi-Wan Kenobi (played by Ewan McGregor) in Star Wars: Episode I, The Phantom Menace as he steps off a spaceship and into the most anticipated cinematic event... well, ever. He might as well be speaking for the legions of fans of the original episodes in the Star Wars saga who can''t help but secretly ask themselves: Sure, this is Star Wars, but is it my Star Wars? The original elevated moviegoers'' expectations so high that it would have been impossible for any subsequent film to meet them. And as with all the Star Wars movies, The Phantom Menace features inexplicable plot twists, a fistful of loose threads, and some cheek-chewing dialogue. Han Solo''s swagger is sorely missed, as is the pervadin!
g menace of heavy-breather Darth Vader. There is still way too much quasi-mystical mumbo jumbo, and some of what was fresh about Star Wars 22 years earlier feels formulaic. Yet there''s much to admire. The special effects are stupendous; three worlds are populated with a melange of creatures, flora, and horizons rendered in absolute detail. The action and battle scenes are breathtaking in their complexity. And one particular sequence of the film');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (174, 22)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (174, 23)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (174, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (174, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (174, 26);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (174, 174, 67, 18);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('175', 'B00006HBUJ', 'Star Wars - Episode II, Attack of the Clones ', 19.98, 'http://images.amazon.com/images/P/B00006HBUJ.01.MZZZZZZZ.jpg', 'If The Phantom Menace was the setup, then Attack of the Clones is the plot-progressing payoff, and devoted Star Wars fans are sure to be enthralled. Ten years after Episode I, Padmé Amidala (Natalie Portman), now a senator, resists the creation of a Republic Army to combat an evil separatist movement. The brooding Anakin Skywalker (Hayden Christensen) is resentful of his stern Jedi mentor, Obi-Wan Kenobi (Ewan McGregor), tormented by personal loss, and showing his emerging "dark side" while protecting his new love, Amidala, from would-be assassins. Youthful romance and solemn portent foreshadow the events of the original Star Wars as Count Dooku (a.k.a. Darth Tyranus, played by Christopher Lee) forges an alliance with the Dark Lord of the Sith, whi!
le lavish set pieces showcase George Lucas''s supreme command of all-digital filmmaking. All of this makes Episode II a technological milestone, savaged by some critics as a bloated, storyless spectacle, but still qualifying as a fan-approved precursor to the pivotal events of Episode III. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('175', 'B00006HBUJ', 'Star Wars - Episode II, Attack of the Clones ', 19.98, 'http://images.amazon.com/images/P/B00006HBUJ.01.MZZZZZZZ.jpg', 'If The Phantom Menace was the setup, then Attack of the Clones is the plot-progressing payoff, and devoted Star Wars fans are sure to be enthralled. Ten years after Episode I, Padme Amidala (Natalie Portman), now a senator, resists the creation of a Republic Army to combat an evil separatist movement. The brooding Anakin Skywalker (Hayden Christensen) is resentful of his stern Jedi mentor, Obi-Wan Kenobi (Ewan McGregor), tormented by personal loss, and showing his emerging "dark side" while protecting his new love, Amidala, from would-be assassins. Youthful romance and solemn portent foreshadow the events of the original Star Wars as Count Dooku (a.k.a. Darth Tyranus, played by Christopher Lee) forges an alliance with the Dark Lord of the Sith, while la!
vish set pieces showcase George Lucas''s supreme command of all-digital filmmaking. All of this makes Episode II a technological milestone, savaged by some critics as a bloated, storyless spectacle, but still qualifying as a fan-approved precursor to the pivotal events of Episode III. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (175, 22)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (175, 23)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (175, 25);
@@ -1522,7 +1522,7 @@
insert into CATEGORIES (CATEGORY, NAME) values (43, 'V/a Compilations');
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (178, 43);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (178, 178, 61, 3);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('179', 'B00000JGHM', 'Heat', 19.98, 'http://images.amazon.com/images/P/B00000JGHM.01.MZZZZZZZ.jpg', 'Having developed his skill as a master of contemporary crime drama, writer-director Michael Mann displayed every aspect of that mastery in this intelligent, character-driven thriller from 1995, which also marked the first onscreen pairing of Robert De Niro and Al Pacino. The two great actors had played father and son in the separate time periods of The Godfather, Part II, but this was the first film in which the pair appeared together, and although their only scene together is brief, it''s the riveting fulcrum of this high-tech cops-and-robbers scenario. De Niro plays a master thief with highly skilled partners (Val Kilmer and Tom Sizemore) whose latest heist draws the attention of Pacino, playing a seasoned Los Angeles detective whose investigation reveals that cop and criminal!
lead similar lives. Both are so devoted to their professions that their personal lives are a disaster. Pacino''s with a wife (Diane Venora) who cheats to avoid the reality of their desolate marriage; De Niro pays the price for a life with no outside connections; and Kilmer''s wife (Ashley Judd) has all but given up hope that her husband will quit his criminal career. These are men obsessed, and as De Niro and Pacino know, they''ll both do whatever''s necessary to bring the other down. Mann''s brilliant screenplay explores these personal obsessions and sacrifices with absorbing insight, and the tension mounts with some of the most riveting action sequences ever filmed');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('179', 'B00000JGHM', 'Heat', 19.98, 'http://images.amazon.com/images/P/B00000JGHM.01.MZZZZZZZ.jpg', 'Having developed his skill as a master of contemporary crime drama, writer-director Michael Mann displayed every aspect of that mastery in this intelligent, character-driven thriller from 1995, which also marked the first onscreen pairing of Robert De Niro and Al Pacino. The two great actors had played father and son in the separate time periods of The Godfather, Part II, but this was the first film in which the pair appeared together, and although their only scene together is brief, it''s the riveting fulcrum of this high-tech cops-and-robbers scenario. De Niro plays a master thief with highly skilled partners (Val Kilmer and Tom Sizemore) whose latest heist draws the attention of Pacino, playing a seasoned Los Angeles detective whose investigation reveals that cop and criminal lead similar l!
ives. Both are so devoted to their professions that their personal lives are a disaster. Pacino''s with a wife (Diane Venora) who cheats to avoid the reality of their desolate marriage; De Niro pays the price for a life with no outside connections; and Kilmer''s wife (Ashley Judd) has all but given up hope that her husband will quit his criminal career. These are men obsessed, and as De Niro and Pacino know, they''ll both do whatever''s necessary to bring the other down. Mann''s brilliant screenplay explores these personal obsessions and sacrifices with absorbing insight, and the tension mounts with some of the most riveting action sequences ever filmed');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (179, 23)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (179, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (179, 15);
@@ -1608,7 +1608,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (188, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (188, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (188, 188, 11, 16);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('189', 'B00003CX9U', 'Empire of the Sun', 14.98, 'http://images.amazon.com/images/P/B00003CX9U.01.MZZZZZZZ.jpg', 'Roundly dismissed as one of Steven Spielberg''s least successful efforts, this very underrated film poignantly follows the World War II adventures of young Jim (a brilliant Christian Bale), caught in the throes of the fall of China. What if you once had everything and lost it all in an afternoon? What if you were only 12? Bale''s transformation, from pampered British ruling-class child to an imprisoned, desperate, nearly feral boy, is nothing short of stunning. Also stunning are exceptional sets, cinematography, and music (the last courtesy of John Williams) that enhance author J.G. Ballard''s and screenwriter Tom Stoppard''s depiction of another, less familiar casualty of war. In a time when competitors were releasing "comedic," derivative coming-of-age films, Empire of t!
he Sun stands out as an epic in the classic David Lean sense');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('189', 'B00003CX9U', 'Empire of the Sun', 14.98, 'http://images.amazon.com/images/P/B00003CX9U.01.MZZZZZZZ.jpg', 'Roundly dismissed as one of Steven Spielberg''s least successful efforts, this very underrated film poignantly follows the World War II adventures of young Jim (a brilliant Christian Bale), caught in the throes of the fall of China. What if you once had everything and lost it all in an afternoon? What if you were only 12? Bale''s transformation, from pampered British ruling-class child to an imprisoned, desperate, nearly feral boy, is nothing short of stunning. Also stunning are exceptional sets, cinematography, and music (the last courtesy of John Williams) that enhance author J.G. Ballard''s and screenwriter Tom Stoppard''s depiction of another, less familiar casualty of war. In a time when competitors were releasing "comedic," derivative coming-of-age films, Empire of the Su!
n stands out as an epic in the classic David Lean sense');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (189, 26)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (189, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (189, 28);
@@ -1648,7 +1648,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (193, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (193, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (193, 193, 18, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('194', 'B000F7CMRM', 'Syriana ', 28.98, 'http://images.amazon.com/images/P/B000F7CMRM.01.MZZZZZZZ.jpg', 'Syriana is an oil-based soap opera set against the world of global oil cartels. It is to the oil industry as Traffic was to the drug trade (no surprise, since writer/director Stephen Gaghan wrote the screenplay to Traffic): a sprawling attempt to portray the vast political, business, social, and personal implications of a societal addiction, in this case, oil. A major merger between two of the world’s largest oil companies reveals ethical dilemmas for the lawyer charged with making the deal (Jeffrey Wright), and major global implications beyond the obvious; a CIA operative (George Clooney) discovers the truth about his work, and the people he works for; a young oil broker (Matt Damon) encounters personal tragedy, then partners with an idealistic Gulf prince (Alexander Siddig) attempti!
ng to build a new economy for his people, only to find he’s opposed by powers far beyond his control. Meanwhile, disenfranchised Pakistani youths are lured into terrorism by a radical Islamic cleric. And that’s just the start. As in Traffic, in one way or another all of the characters’ fates are tied to each other, whether they realize it or not, though the connections are sometimes tenuous. While Syriana is basically a good film with timely resonance, it can’t quite seem to measure up to Gaghan’s ambitious vision and it very nearly collapses under the weight of its many storylines. Fortunately they are resolved skillfully enough to keep the film from going under in the end. To some viewers, Syriana will seem like an unfocused and over-loaded film that goes, all at once, everywhere and nowhere. Others will find it to be an important work earnestly exploring major issues. In either case, it’s a film that deserves to be taken seriously, and it&#!
146;s likely to be one that will be talked about for a long time to co
me. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('194', 'B000F7CMRM', 'Syriana ', 28.98, 'http://images.amazon.com/images/P/B000F7CMRM.01.MZZZZZZZ.jpg', 'Syriana is an oil-based soap opera set against the world of global oil cartels. It is to the oil industry as Traffic was to the drug trade (no surprise, since writer/director Stephen Gaghan wrote the screenplay to Traffic): a sprawling attempt to portray the vast political, business, social, and personal implications of a societal addiction, in this case, oil. A major merger between two of the world''s largest oil companies reveals ethical dilemmas for the lawyer charged with making the deal (Jeffrey Wright), and major global implications beyond the obvious; a CIA operative (George Clooney) discovers the truth about his work, and the people he works for; a young oil broker (Matt Damon) encounters personal tragedy, then partners with an idealistic Gulf prince (Alexander Siddig) attempting t!
o build a new economy for his people, only to find he''s opposed by powers far beyond his control. Meanwhile, disenfranchised Pakistani youths are lured into terrorism by a radical Islamic cleric. And that''s just the start. As in Traffic, in one way or another all of the characters'' fates are tied to each other, whether they realize it or not, though the connections are sometimes tenuous. While Syriana is basically a good film with timely resonance, it can''t quite seem to measure up to Gaghan''s ambitious vision and it very nearly collapses under the weight of its many storylines. Fortunately they are resolved skillfully enough to keep the film from going under in the end. To some viewers, Syriana will seem like an unfocused and over-loaded film that goes, all at once, everywhere and nowhere. Others will find it to be an important work earnestly exploring major issues. In either case, it''s a film that deserves to be taken seriously, and it''s likely to be one that will!
be talked about for a long time to come. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (194, 27)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (194, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (194, 15);
@@ -1699,7 +1699,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (199, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (199, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (199, 199, 61, 5);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('200', '6305216088', 'Good Will Hunting ', 19.99, 'http://images.amazon.com/images/P/6305216088.01.MZZZZZZZ.jpg', 'Robin Williams won the Oscar for Best Supporting Actor, and actors Matt Damon and Ben Affleck nabbed one for Best Original Screenplay, but the feel-good hit Good Will Hunting triumphs because of its gifted director, Gus Van Sant. The unconventional director (My Own Private Idaho, Drugstore Cowboy) saves a script marred by vanity and clunky character development by yanking soulful, touching performances out of his entire cast (amazingly, even one by Williams that''s relatively schtick-free). Van Sant pulls off the equivalent of what George Cukor accomplished for women''s melodrama in the ''30s and ''40s: He''s crafted an intelligent, unabashedly emotional male weepie about men trying to find inner-wisdom. Matt Damon stars as Will Hunting, a closet math genius who ignores his gift!
in favor of nightly boozing and fighting with South Boston buddies (co-writer Ben Affleck among them). While working as a university janitor, he solves an impossible calculus problem scribbled on a hallway blackboard and reluctantly becomes the prodigy of an arrogant MIT professor (Stellan Skarsgård). Damon only avoids prison by agreeing to see psychiatrists, all of whom he mocks or psychologically destroys until he meets his match in the professor''s former childhood friend, played by Williams. Both doctor and patient are haunted by the past, and as mutual respect develops, the healing process begins. The film''s beauty lies not with grand climaxes, but with small, quiet moments. Scenes such as Affleck''s clumsy pep talk to Damon while they drink beer after work, or any number of therapy session between Williams and Damon offer poignant looks at the awkward ways men show affection and feeling for one another. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('200', '6305216088', 'Good Will Hunting ', 19.99, 'http://images.amazon.com/images/P/6305216088.01.MZZZZZZZ.jpg', 'Robin Williams won the Oscar for Best Supporting Actor, and actors Matt Damon and Ben Affleck nabbed one for Best Original Screenplay, but the feel-good hit Good Will Hunting triumphs because of its gifted director, Gus Van Sant. The unconventional director (My Own Private Idaho, Drugstore Cowboy) saves a script marred by vanity and clunky character development by yanking soulful, touching performances out of his entire cast (amazingly, even one by Williams that''s relatively schtick-free). Van Sant pulls off the equivalent of what George Cukor accomplished for women''s melodrama in the ''30s and ''40s: He''s crafted an intelligent, unabashedly emotional male weepie about men trying to find inner-wisdom. Matt Damon stars as Will Hunting, a closet math genius who ignores his gift!
in favor of nightly boozing and fighting with South Boston buddies (co-writer Ben Affleck among them). While working as a university janitor, he solves an impossible calculus problem scribbled on a hallway blackboard and reluctantly becomes the prodigy of an arrogant MIT professor. Damon only avoids prison by agreeing to see psychiatrists, all of whom he mocks or psychologically destroys until he meets his match in the professor''s former childhood friend, played by Williams. Both doctor and patient are haunted by the past, and as mutual respect develops, the healing process begins. The film''s beauty lies not with grand climaxes, but with small, quiet moments. Scenes such as Affleck''s clumsy pep talk to Damon while they drink beer after work, or any number of therapy session between Williams and Damon offer poignant looks at the awkward ways men show affection and feeling for one another. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (200, 27)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (200, 39)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (200, 58)
@@ -1779,7 +1779,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (210, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (210, 26);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (210, 210, 31, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('211', 'B000F6IHSG', 'Dazed & Confused - Criterion Collection', 39.95, 'http://images.amazon.com/images/P/B000F6IHSG.01.MZZZZZZZ.jpg', 'You remember high school? Really remember? If you think you do, watch this film: it''ll all really come racing back. After changing the world with the generation-defining Slacker, director Richard Linklater turned his free-range vérité sensibility on the 1970s. As before, his all-seeing camera meanders across a landscape studded with goofy pop culture references and poignant glimpses of human nature. Only this time around, he''s spreading a thick layer of nostalgia over the lens (and across the soundtrack). It''s as if Fast Times at Ridgemont High was directed by Jean-Luc Godard. The story deals with a group of friends on the last day of high school, 1976. Good-natured football star Randall "Pink" Floyd navigates effortlessly between the warring!
worlds of jocks, stoners, wannabes, and rockers with girlfriend and new-freshman buddy in tow. Surprisingly, it''s not a coming-of-age movie, but a film that dares ask the eternal, overwhelming, adolescent question, "What happens next?" It''s a little too honest to be a light comedy (representative quote: "If I ever say these were the best years of my life, remind me to kill myself."). But it''s also way too much fun (remember souped-up Corvettes and bicentennial madness?) to be just another existential-essay-on-celluloid. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('211', 'B000F6IHSG', 'Dazed & Confused - Criterion Collection', 39.95, 'http://images.amazon.com/images/P/B000F6IHSG.01.MZZZZZZZ.jpg', 'You remember high school? Really remember? If you think you do, watch this film: it''ll all really come racing back. After changing the world with the generation-defining Slacker, director Richard Linklater turned his free-range verite sensibility on the 1970s. As before, his all-seeing camera meanders across a landscape studded with goofy pop culture references and poignant glimpses of human nature. Only this time around, he''s spreading a thick layer of nostalgia over the lens (and across the soundtrack). It''s as if Fast Times at Ridgemont High was directed by Jean-Luc Godard. The story deals with a group of friends on the last day of high school, 1976. Good-natured football star Randall "Pink" Floyd navigates effortlessly between the warring worlds of joc!
ks, stoners, wannabes, and rockers with girlfriend and new-freshman buddy in tow. Surprisingly, it''s not a coming-of-age movie, but a film that dares ask the eternal, overwhelming, adolescent question, "What happens next?" It''s a little too honest to be a light comedy (representative quote: "If I ever say these were the best years of my life, remind me to kill myself."). But it''s also way too much fun (remember souped-up Corvettes and bicentennial madness?) to be just another existential-essay-on-celluloid. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (211, 29)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (211, 58)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (211, 7);
@@ -1804,7 +1804,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (213, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (213, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (213, 213, 36, 12);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('214', 'B00029RTAI', 'Dazed & Confused ', 14.98, 'http://images.amazon.com/images/P/B00029RTAI.01.MZZZZZZZ.jpg', 'You remember high school? Really remember? If you think you do, watch this film: it''ll all really come racing back. After changing the world with the generation-defining Slacker, director Richard Linklater turned his free-range vérité sensibility on the 1970s. As before, his all-seeing camera meanders across a landscape studded with goofy pop culture references and poignant glimpses of human nature. Only this time around, he''s spreading a thick layer of nostalgia over the lens (and across the soundtrack). It''s as if Fast Times at Ridgemont High was directed by Jean-Luc Godard. The story deals with a group of friends on the last day of high school, 1976. Good-natured football star Randall "Pink" Floyd navigates effortlessly between the warring worlds of jocks, ston!
ers, wannabes, and rockers with girlfriend and new-freshman buddy in tow. Surprisingly, it''s not a coming-of-age movie, but a film that dares ask the eternal, overwhelming, adolescent question, "What happens next?" It''s a little too honest to be a light comedy (representative quote: "If I ever say these were the best years of my life, remind me to kill myself."). But it''s also way too much fun (remember souped-up Corvettes and bicentennial madness?) to be just another existential-essay-on-celluloid. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('214', 'B00029RTAI', 'Dazed & Confused ', 14.98, 'http://images.amazon.com/images/P/B00029RTAI.01.MZZZZZZZ.jpg', 'You remember high school? Really remember? If you think you do, watch this film: it''ll all really come racing back. After changing the world with the generation-defining Slacker, director Richard Linklater turned his free-range verite sensibility on the 1970s. As before, his all-seeing camera meanders across a landscape studded with goofy pop culture references and poignant glimpses of human nature. Only this time around, he''s spreading a thick layer of nostalgia over the lens (and across the soundtrack). It''s as if Fast Times at Ridgemont High was directed by Jean-Luc Godard. The story deals with a group of friends on the last day of high school, 1976. Good-natured football star Randall "Pink" Floyd navigates effortlessly between the warring worlds of jocks, stoners, wannabes,!
and rockers with girlfriend and new-freshman buddy in tow. Surprisingly, it''s not a coming-of-age movie, but a film that dares ask the eternal, overwhelming, adolescent question, "What happens next?" It''s a little too honest to be a light comedy (representative quote: "If I ever say these were the best years of my life, remind me to kill myself."). But it''s also way too much fun (remember souped-up Corvettes and bicentennial madness?) to be just another existential-essay-on-celluloid. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (214, 29)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (214, 58)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (214, 7);
@@ -1813,7 +1813,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (214, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (214, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (214, 214, 64, 15);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('215', 'B00003CXSM', 'The Wedding Planner', 14.94, 'http://images.amazon.com/images/P/B00003CXSM.01.MZZZZZZZ.jpg', 'The good news is, yes, Jennifer Lopez can do comedy. In The Wedding Planner Lopez is Mary, a lovable woman who believes "those who can''t do, teach. Those who can''t wed, plan!" Her slapstick moments are lighthearted and she is spot-on as the controlling, compulsive-yet-sweet planner. The bad news is Lopez didn''t get much of a vehicle in which to test drive her newfound comedic skills. Mary''s life is her career. Planning other people''s weddings takes all of her time, leaving no room for a love life of her own. Her only personal life is a Scrabble club, to which she and her father (Alex Rocco, whose wandering Italian accent is painful to listen to) belong. When a handsome young doctor (Matthew McConaughey) saves her from a collision with a runaway dumpster (really, it works),!
she is instantly wooed by his quiet charm. Too bad he''s the fiancé of Mary''s biggest client, Fran (played winningly by Bridgette Wilson-Sampras), the job that will launch Mary as a partner in her firm. The main problem with this film is that no one wants to hurt anyone else''s feelings. Everyone is just so gosh-darn nice. In a subplot, Mary''s father is trying to arrange her marriage to just the nicest Italian boy. Gee, he''s sweet. Golly, Fran is nice. Is there ever a way out of this mess and to leave everyone smiling? Yet, there is a touch of old-fashioned romance to this wholesome film, which can only be described as "cute." And while things may unfold in a predictable manner, The Wedding Planner is still lighthearted fun of the sort that inspires dreamy romantic thoughts. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('215', 'B00003CXSM', 'The Wedding Planner', 14.94, 'http://images.amazon.com/images/P/B00003CXSM.01.MZZZZZZZ.jpg', 'The good news is, yes, Jennifer Lopez can do comedy. In The Wedding Planner Lopez is Mary, a lovable woman who believes "those who can''t do, teach. Those who can''t wed, plan!" Her slapstick moments are lighthearted and she is spot-on as the controlling, compulsive-yet-sweet planner. The bad news is Lopez didn''t get much of a vehicle in which to test drive her newfound comedic skills. Mary''s life is her career. Planning other people''s weddings takes all of her time, leaving no room for a love life of her own. Her only personal life is a Scrabble club, to which she and her father (Alex Rocco, whose wandering Italian accent is painful to listen to) belong. When a handsome young doctor (Matthew McConaughey) saves her from a collision with a runaway dumpster (really, it works),!
she is instantly wooed by his quiet charm. Too bad he''s the fiance of Mary''s biggest client, Fran (played winningly by Bridgette Wilson-Sampras), the job that will launch Mary as a partner in her firm. The main problem with this film is that no one wants to hurt anyone else''s feelings. Everyone is just so gosh-darn nice. In a subplot, Mary''s father is trying to arrange her marriage to just the nicest Italian boy. Gee, he''s sweet. Golly, Fran is nice. Is there ever a way out of this mess and to leave everyone smiling? Yet, there is a touch of old-fashioned romance to this wholesome film, which can only be described as "cute." And while things may unfold in a predictable manner, The Wedding Planner is still lighthearted fun of the sort that inspires dreamy romantic thoughts. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (215, 29)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (215, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (215, 8);
@@ -1874,7 +1874,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (222, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (222, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (222, 222, 84, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('223', 'B00006RCO1', 'All About Eve ', 14.98, 'http://images.amazon.com/images/P/B00006RCO1.01.MZZZZZZZ.jpg', 'Showered with Oscars, this wonderfully bitchy (and witty) comedy written and directed by Joseph L. Mankiewicz concerns an aging theater star (Bette Davis) whose life is being supplanted by a wolf-in-sheep''s-clothing ingenue (Anne Baxter) whom she helped. This is a film for a viewer to take in like a box of chocolates, packed with scene-for-scene delights that make the entire story even better than it really is. The film also gives deviously talented actors such as George Sanders and Thelma Ritter a chance to speak dazzling lines; Davis bites into her role and never lets go. A classic from Mankiewicz, a legendary screenwriter and the brilliant director of A Letter to Three Wives, The Barefoot Contessa, and Sleuth. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('223', 'B00006RCO1', 'All About Eve ', 14.98, 'http://images.amazon.com/images/P/B00006RCO1.01.MZZZZZZZ.jpg', 'Showered with Oscars, this wonderfully bitchy (and witty) comedy written and directed by Joseph L. Mankiewicz concerns an aging theater star (Bette Davis) whose life is being supplanted by a wolf-in-sheep''s-clothing ingenue (Anne Baxter) whom she helped. This is a film for a viewer to take in like a box of chocolates, packed with scene-for-scene delights that make the entire story even better than it really is. The film also gives deviously talented actors such as George Sanders and Thelma Ritter a chance to speak dazzling lines; Davis bites into her role and never lets go. A classic from Mankiewicz, a legendary screenwriter and the brilliant director of A Letter to Three Wives, The Barefoot Contessa, and Sleuth. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (223, 30)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (223, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (223, 11);
@@ -1978,7 +1978,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (236, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (236, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (236, 236, 53, 18);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('237', 'B000035Z20', 'Great Expectations', 9.98, 'http://images.amazon.com/images/P/B000035Z20.01.MZZZZZZZ.jpg', 'The key ingredient in this modern-day version of Charles Dickens''s classic is director Alfonso Cuarón, who made the glowing, estimable A Little Princess. If you saw that (and you should), understand that Expectations has those ingredients (great sense of time, place, and timing) but adds modern music and sex appeal; the latter personified by the long-legged Gwyneth Paltrow. Finnegan Bell (Ethan Hawke as an adult, Jeremy James Kissner at age 10) is the new version of Dickens''s Pip. He''s a child wise beyond his years, befriending an escaped convict (Robert De Niro) in the warm waters of Florida''s Gulf Coast. Finn is also the plaything for Estella (Paltrow as an adult, Raquel Beaudene at age 10), the niece of the coast''s richest and most eccentric lady, Ms. Dinsmoor (a !
fun and flamboyant Anne Bancroft). The prudish Estella likes Finn (catch the best first kiss scene in many a moon) but has been brought up to disdain men; she''ll break hearts. As the object of Finn''s desires, Estella unfortunately is a one-dimensional character, yet what a dimension! Clad in Donna Karan dresses and her long, sun-kissed hair, Paltrow is luminous. She and Hawke make a very sexy couple. Mitch Glazer''s script does better by Finn. He''s a blue-collar worker with a gift for drawing (artwork by Francesco Clemente). Following his Uncle Joe''s (Chris Cooper) honest ways, Finn grows up as a fisherman, thoughts of Estella and art drifting away in the hard work. When a mysterious benefactor allows him to follow his dream, Finn finds himself in New York, preparing for a once-in-a-lifetime art exhibit');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('237', 'B000035Z20', 'Great Expectations', 9.98, 'http://images.amazon.com/images/P/B000035Z20.01.MZZZZZZZ.jpg', 'The key ingredient in this modern-day version of Charles Dickens''s classic is director Alfonso Cuaron, who made the glowing, estimable A Little Princess. If you saw that (and you should), understand that Expectations has those ingredients (great sense of time, place, and timing) but adds modern music and sex appeal; the latter personified by the long-legged Gwyneth Paltrow. Finnegan Bell (Ethan Hawke as an adult, Jeremy James Kissner at age 10) is the new version of Dickens''s Pip. He''s a child wise beyond his years, befriending an escaped convict (Robert De Niro) in the warm waters of Florida''s Gulf Coast. Finn is also the plaything for Estella (Paltrow as an adult, Raquel Beaudene at age 10), the niece of the coast''s richest and most eccentric lady, Ms. Dinsmoor (a fun and!
flamboyant Anne Bancroft). The prudish Estella likes Finn (catch the best first kiss scene in many a moon) but has been brought up to disdain men; she''ll break hearts. As the object of Finn''s desires, Estella unfortunately is a one-dimensional character, yet what a dimension! Clad in Donna Karan dresses and her long, sun-kissed hair, Paltrow is luminous. She and Hawke make a very sexy couple. Mitch Glazer''s script does better by Finn. He''s a blue-collar worker with a gift for drawing (artwork by Francesco Clemente). Following his Uncle Joe''s (Chris Cooper) honest ways, Finn grows up as a fisherman, thoughts of Estella and art drifting away in the hard work. When a mysterious benefactor allows him to follow his dream, Finn finds himself in New York, preparing for a once-in-a-lifetime art exhibit');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (237, 32)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (237, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (237, 11);
@@ -2065,7 +2065,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (247, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (247, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (247, 247, 84, 24);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('248', 'B00005V4XV', 'Original Sin ', 14.94, 'http://images.amazon.com/images/P/B00005V4XV.01.MZZZZZZZ.jpg', 'Original Sin belongs in the "so bad it''s good" category of languid potboilers, offering enough nudity, sexual chemistry, and far-fetched plotting to make it an enjoyable lazy-day diversion. Based on Cornell Woolrich''s novel Waltz into Darkness (previous filmed by François Truffaut as Mississippi Mermaid) and set in turn-of-the-century Cuba, the film traces a tailspin of amorous obsession when coffee plantation owner Luis (Antonio Banderas) discovers that his American mail-order bride (Angelina Jolie) is not the plain wife he''d expected, but a beautiful, scheming thief who''s after his fortune. The movie asserts that love is truly blind, but absurd twists of plot make Luis appear more stupid than passionate. Writer-director Michael Cristofer fared better with Jolie in Gia; he!
re, he''s made another good-looking film about beautiful people, but its plot just can''t be taken seriously. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('248', 'B00005V4XV', 'Original Sin ', 14.94, 'http://images.amazon.com/images/P/B00005V4XV.01.MZZZZZZZ.jpg', 'Original Sin belongs in the "so bad it''s good" category of languid potboilers, offering enough nudity, sexual chemistry, and far-fetched plotting to make it an enjoyable lazy-day diversion. Based on Cornell Woolrich''s novel Waltz into Darkness (previous filmed by Francois Truffaut as Mississippi Mermaid) and set in turn-of-the-century Cuba, the film traces a tailspin of amorous obsession when coffee plantation owner Luis (Antonio Banderas) discovers that his American mail-order bride (Angelina Jolie) is not the plain wife he''d expected, but a beautiful, scheming thief who''s after his fortune. The movie asserts that love is truly blind, but absurd twists of plot make Luis appear more stupid than passionate. Writer-director Michael Cristofer fared better with Jolie in Gia; here, he'!
's made another good-looking film about beautiful people, but its plot just can''t be taken seriously. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (248, 34)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (248, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (248, 11);
@@ -2079,7 +2079,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (249, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (249, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (249, 249, 7, 22);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('250', 'B00003CWQR', 'Girl, Interrupted', 14.94, 'http://images.amazon.com/images/P/B00003CWQR.01.MZZZZZZZ.jpg', 'Based on Susanna Kaysen''s acclaimed journal-memoir, Girl, Interrupted bears inevitable resemblance to One Flew Over the Cuckoo''s Nest, and pale comparison to that earlier classic is impossible to avoid. The mental institution settings of both films guarantee a certain degree of déjà vu and at least one Oscar winner (in this case, Angelina Jolie), since playing a loony is any actor''s dream gig. Unfortunately, director James Mangold seems to have misplaced the depth and delicacy of his underrated debut, Heavy, despite a great deal of earnest effort by everyone involved. It''s easy to see why Winona Ryder chose to star in (and executive-produce) this nearly worthy adaptation of Kaysen''s book, since it''s a strong vehicle for female casting and potent drama. Mangold!
certainly got the former; whether he succeeded with the latter is not so clear. To be sure, Ryder conveys the confusion and chaos that signified Kaysen''s life during nearly 18 months of voluntary institutionalization beginning in 1967. But the film seems too eager to embrace the cliché that the "crazies" of the Claymoore women''s ward are saner than the war-torn world outside, and lack of narrative focus gives way to semipredictable character study. Susanna (Ryder) is labeled with "borderline personality disorder," a diagnosis as ambiguous as her own emotions, and while Jolie chews the scenery as the resident bad-girl sociopath, Ryder effectively conveys an odyssey from vulnerable fear to self-awareness and, finally, to healing. The ensemble cast is uniformly superb, making this drama well worthwhile, even as it treads familiar territory. If it ultimately lacks dramatic impact, Girl, Interrupted makes it painfully clear that the boundaries of dysfunction ar!
e hazy in a world where everyone''s crazy once in a while. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('250', 'B00003CWQR', 'Girl, Interrupted', 14.94, 'http://images.amazon.com/images/P/B00003CWQR.01.MZZZZZZZ.jpg', 'Based on Susanna Kaysen''s acclaimed journal-memoir, Girl, Interrupted bears inevitable resemblance to One Flew Over the Cuckoo''s Nest, and pale comparison to that earlier classic is impossible to avoid. The mental institution settings of both films guarantee a certain degree of deja vu and at least one Oscar winner (in this case, Angelina Jolie), since playing a loony is any actor''s dream gig. Unfortunately, director James Mangold seems to have misplaced the depth and delicacy of his underrated debut, Heavy, despite a great deal of earnest effort by everyone involved. It''s easy to see why Winona Ryder chose to star in (and executive-produce) this nearly worthy adaptation of Kaysen''s book, since it''s a strong vehicle for female casting and potent drama. Mangold certainly got!
the former; whether he succeeded with the latter is not so clear. To be sure, Ryder conveys the confusion and chaos that signified Kaysen''s life during nearly 18 months of voluntary institutionalization beginning in 1967. But the film seems too eager to embrace the cliche that the "crazies" of the Claymoore women''s ward are saner than the war-torn world outside, and lack of narrative focus gives way to semipredictable character study. Susanna (Ryder) is labeled with "borderline personality disorder," a diagnosis as ambiguous as her own emotions, and while Jolie chews the scenery as the resident bad-girl sociopath, Ryder effectively conveys an odyssey from vulnerable fear to self-awareness and, finally, to healing. The ensemble cast is uniformly superb, making this drama well worthwhile, even as it treads familiar territory. If it ultimately lacks dramatic impact, Girl, Interrupted makes it painfully clear that the boundaries of dysfunction are hazy in a world where ev!
eryone''s crazy once in a while. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (250, 34)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (250, 46)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (250, 2);
@@ -2094,7 +2094,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (251, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (251, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (251, 251, 10, 17);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('252', '6305047456', 'Hackers', 14.94, 'http://images.amazon.com/images/P/6305047456.01.MZZZZZZZ.jpg', 'As a depiction of the computer-hacker underground, this movie is bogus to the bone. As a thriller, it''s cartoonish and conventional. The premise (computer-happy kids hack into the wrong system, and the Forces of Repression come after them) is recycled from John Badham''s 1983 WarGames. And the corporate-creep bad guy, played by Fisher Stevens, steeples his fingers and growls mossy villainous clichés. ("By the time they realize the truth, we''ll be long gone with all the money.") For all its postmodern trappings the movie is working with sub-prehistoric storytelling tools. But it does succeed on one level, as a movie about adolescent bonding and alienation. The director, Iain Softley, helmed the Beatles-in-Hamburg biopic Backbeat, and he seems to have an instinct for the emotions tha!
t pull kids together around common interests and the insecurities that drive them apart. The familiar crises of loyalty and betrayal have an ache of real loneliness. It doesn''t hurt that the two stars, Jonny Lee Miller (Sick Boy Williamson in Trainspotting) and Angelina Jolie (Gia), are just about equally gorgeous and charismatic; their longing glances steam up the screen. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('252', '6305047456', 'Hackers', 14.94, 'http://images.amazon.com/images/P/6305047456.01.MZZZZZZZ.jpg', 'As a depiction of the computer-hacker underground, this movie is bogus to the bone. As a thriller, it''s cartoonish and conventional. The premise (computer-happy kids hack into the wrong system, and the Forces of Repression come after them) is recycled from John Badham''s 1983 WarGames. And the corporate-creep bad guy, played by Fisher Stevens, steeples his fingers and growls mossy villainous cliches. ("By the time they realize the truth, we''ll be long gone with all the money.") For all its postmodern trappings the movie is working with sub-prehistoric storytelling tools. But it does succeed on one level, as a movie about adolescent bonding and alienation. The director, Iain Softley, helmed the Beatles-in-Hamburg biopic Backbeat, and he seems to have an instinct for the emotions that pull !
kids together around common interests and the insecurities that drive them apart. The familiar crises of loyalty and betrayal have an ache of real loneliness. It doesn''t hurt that the two stars, Jonny Lee Miller (Sick Boy Williamson in Trainspotting) and Angelina Jolie (Gia), are just about equally gorgeous and charismatic; their longing glances steam up the screen. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (252, 34)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (252, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (252, 28);
@@ -2110,7 +2110,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (253, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (253, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (253, 253, 88, 16);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('254', '6305313687', 'American History X', 14.98, 'http://images.amazon.com/images/P/6305313687.01.MZZZZZZZ.jpg', 'Perhaps the highest compliment you can pay to Edward Norton is that his Oscar-nominated performance in American History X nearly convinces you that there is a shred of logic in the tenets of white supremacy. If that statement doesn''t horrify you, it should; Norton is so fully immersed in his role as a neo-Nazi skinhead that his character''s eloquent defense of racism is disturbingly persuasive');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('254', '6305313687', 'American History X', 14.98, 'http://images.amazon.com/images/P/6305313687.01.MZZZZZZZ.jpg', 'Perhaps the highest compliment you can pay to Edward Norton is that his Oscar-nominated performance in American History X nearly convinces you that there is a shred of logic in the tenets of white supremacy. If that statement doesn''t horrify you, it should; Norton is so fully immersed in his role as a neo-Nazi skinhead that his character''s eloquent defense of racism is disturbingly persuasive');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (254, 35)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (254, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (254, 11);
@@ -2164,7 +2164,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (260, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (260, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (260, 260, 70, 22);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('261', 'B00005JL93', 'Mr. Deeds ', 14.94, 'http://images.amazon.com/images/P/B00005JL93.01.MZZZZZZZ.jpg', 'Following the flop of Little Nicky, Adam Sandler returned to safe territory in Mr. Deeds... and made Nicky look inspired by comparison. A loose remake of Frank Capra''s 1936 classic Mr. Deeds Goes to Town, this dumbed-down version finds Sandler in the Gary Cooper role, inheriting a vast fortune and a corporate empire, foiling a greedy executive (Peter Gallagher), and winning the heart of an undercover reporter (Winona Ryder) who''s been mocking his small-town naiveté in print while falling for his goodhearted sincerity. It''s fun enough to satisfy Sandler''s loyal fans');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('261', 'B00005JL93', 'Mr. Deeds ', 14.94, 'http://images.amazon.com/images/P/B00005JL93.01.MZZZZZZZ.jpg', 'Following the flop of Little Nicky, Adam Sandler returned to safe territory in Mr. Deeds... and made Nicky look inspired by comparison. A loose remake of Frank Capra''s 1936 classic Mr. Deeds Goes to Town, this dumbed-down version finds Sandler in the Gary Cooper role, inheriting a vast fortune and a corporate empire, foiling a greedy executive (Peter Gallagher), and winning the heart of an undercover reporter (Winona Ryder) who''s been mocking his small-town naivete; in print while falling for his goodhearted sincerity. It''s fun enough to satisfy Sandler''s loyal fans');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (261, 36)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (261, 46)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (261, 7);
@@ -2173,7 +2173,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (261, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (261, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (261, 261, 74, 15);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('262', 'B0007OCG56', 'Spanglish', 14.94, 'http://images.amazon.com/images/P/B0007OCG56.01.MZZZZZZZ.jpg', 'Anyone familiar with writer/director James L. Brooks (Broadcast News, As Good As It Gets) knows the man has a real feel for interesting women and a disarming way with a one-liner. The main women in Spanglish are Deborah Clasky (Téa Leoni), a moneyed SoCal mom, and non-English speaking Flor Moreno (Paz Vega), the beautiful Latina whom Deborah hires as a housekeeper. The one-liners, some of them amusing, are everywhere. Brooks provides an intriguing set-up for the two women to butt heads');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('262', 'B0007OCG56', 'Spanglish', 14.94, 'http://images.amazon.com/images/P/B0007OCG56.01.MZZZZZZZ.jpg', 'Anyone familiar with writer/director James L. Brooks (Broadcast News, As Good As It Gets) knows the man has a real feel for interesting women and a disarming way with a one-liner. The main women in Spanglish are Deborah Clasky, a moneyed SoCal mom, and non-English speaking Flor Moreno (Paz Vega), the beautiful Latina whom Deborah hires as a housekeeper. The one-liners, some of them amusing, are everywhere. Brooks provides an intriguing set-up for the two women to butt heads');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (262, 36)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (262, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (262, 8);
@@ -2181,7 +2181,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (262, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (262, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (262, 262, 43, 1);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('263', '6305897786', 'The Ninth Gate', 9.98, 'http://images.amazon.com/images/P/6305897786.01.MZZZZZZZ.jpg', 'The horror of Roman Polanski is not about spectacle and shock but a goose-pimply sense of evil lurking just outside the frame and hidden behind the faces of slightly unsettling characters. For a while it looks like The Ninth Gate, adapted from the novel The Club Dumas by Arturo Pérez-Reverte, might recapture the beautiful uneasiness of such masterpieces as Repulsion and Rosemary''s Baby. A calm, almost sleepy Johnny Depp plays cynical, unscrupulous rare-book hunter Dean Corso, who''s hired by demonologist Boris Balkan (Frank Langella) to authenticate a rare volume that, legend has it, was cowritten by Lucifer himself. Dean leaves a Gothic looking New York (re-created in Europe by Polanski as a sinister city of shadows) for Portugal and Paris to compare Balkan''s volume with the!
two copies known to be in existence and uncovers a mystery with unholy ramifications. He also finds himself at the center of a conspiracy that involves Balkan, a widow who will stop at nothing to retrieve Balkan''s book (Lena Olin, who gleefully bites and claws her way through the part), and a mysterious guardian "angel" (Polanski''s wife, Emmanuelle Seigner) who shadows his every step. The Ninth Gate is full of rumbling menace and deliciously unsettling imagery, but Polanski''s languorous direction and purposefully vague story render a film that''s eerie without every becoming thrilling. It''s perpetually on the verge of becoming interesting');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('263', '6305897786', 'The Ninth Gate', 9.98, 'http://images.amazon.com/images/P/6305897786.01.MZZZZZZZ.jpg', 'The horror of Roman Polanski is not about spectacle and shock but a goose-pimply sense of evil lurking just outside the frame and hidden behind the faces of slightly unsettling characters. For a while it looks like The Ninth Gate, adapted from the novel The Club Dumas by Arturo Perez-Reverte, might recapture the beautiful uneasiness of such masterpieces as Repulsion and Rosemary''s Baby. A calm, almost sleepy Johnny Depp plays cynical, unscrupulous rare-book hunter Dean Corso, who''s hired by demonologist Boris Balkan (Frank Langella) to authenticate a rare volume that, legend has it, was cowritten by Lucifer himself. Dean leaves a Gothic looking New York (re-created in Europe by Polanski as a sinister city of shadows) for Portugal and Paris to compare Balkan''s volume with the two co!
pies known to be in existence and uncovers a mystery with unholy ramifications. He also finds himself at the center of a conspiracy that involves Balkan, a widow who will stop at nothing to retrieve Balkan''s book (Lena Olin, who gleefully bites and claws her way through the part), and a mysterious guardian "angel" (Polanski''s wife, Emmanuelle Seigner) who shadows his every step. The Ninth Gate is full of rumbling menace and deliciously unsettling imagery, but Polanski''s languorous direction and purposefully vague story render a film that''s eerie without every becoming thrilling. It''s perpetually on the verge of becoming interesting');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (263, 37)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (263, 13);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (263, 25);
@@ -2196,7 +2196,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (264, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (264, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (264, 264, 97, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('265', 'B00003CXWV', 'Blow ', 19.96, 'http://images.amazon.com/images/P/B00003CXWV.01.MZZZZZZZ.jpg', 'A briskly paced hybrid of Boogie Nights and Goodfellas, Blow chronicles the three-decade rise and fall of George Jung (Johnny Depp), a normal American kid who makes a personal vow against poverty, builds a marijuana empire in the ''60s, multiplies his fortune with the Colombian Medellín cocaine cartel, and blows it all with a series of police busts culminating in one final, long-term jail sentence. "Your dad''s a loser," says this absentee father to his estranged but beloved daughter, and he''s right: Blow is the story of a nice guy who made wrong choices all his life, almost single-handedly created the American cocaine trade, and got exactly what he deserved. As directed by Ted Demme, the film is vibrantly entertaining, painstakingly authentic... and utterly aimless in terms of overal!
l purpose. We can''t sympathize with Jung''s meteoric rise to wealth and the wild life, and Demme isn''t suggesting that we should idolize a drug dealer. So what, exactly, is the point of Blow? Simply, it seems, to present Jung''s story as the epitome of the coke-driven glory days, and to suggest, ever so subtly, that Jung isn''t such a bad guy, after all. Anyone curious about his lifestyle will find this film amazing, and there''s plenty of humor mixed with the constant threat of violence and paranoid anxiety. Demme has also populated the film with a fantastic supporting cast (although Penélope Cruz grows tiresome as Jung''s hedonistic wife), and this is certainly a compelling look at the other side of Traffic. Still, one wishes that Blow had a more viable reason for being; like a wild party, it leaves you with a hangover and a vague feeling of regret. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('265', 'B00003CXWV', 'Blow ', 19.96, 'http://images.amazon.com/images/P/B00003CXWV.01.MZZZZZZZ.jpg', 'A briskly paced hybrid of Boogie Nights and Goodfellas, Blow chronicles the three-decade rise and fall of George Jung (Johnny Depp), a normal American kid who makes a personal vow against poverty, builds a marijuana empire in the ''60s, multiplies his fortune with the Colombian Medellin cocaine cartel, and blows it all with a series of police busts culminating in one final, long-term jail sentence. "Your dad''s a loser," says this absentee father to his estranged but beloved daughter, and he''s right: Blow is the story of a nice guy who made wrong choices all his life, almost single-handedly created the American cocaine trade, and got exactly what he deserved. As directed by Ted Demme, the film is vibrantly entertaining, painstakingly authentic... and utterly aimless in terms of overall purpo!
se. We can''t sympathize with Jung''s meteoric rise to wealth and the wild life, and Demme isn''t suggesting that we should idolize a drug dealer. So what, exactly, is the point of Blow? Simply, it seems, to present Jung''s story as the epitome of the coke-driven glory days, and to suggest, ever so subtly, that Jung isn''t such a bad guy, after all. Anyone curious about his lifestyle will find this film amazing, and there''s plenty of humor mixed with the constant threat of violence and paranoid anxiety. Demme has also populated the film with a fantastic supporting cast (although Penelope Cruz grows tiresome as Jung''s hedonistic wife), and this is certainly a compelling look at the other side of Traffic. Still, one wishes that Blow had a more viable reason for being; like a wild party, it leaves you with a hangover and a vague feeling of regret. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (265, 37)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (265, 52)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (265, 2);
@@ -2219,14 +2219,14 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (267, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (267, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (267, 267, 18, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('268', 'B00005Q79A', 'What''s Eating Gilbert Grape', 9.98, 'http://images.amazon.com/images/P/B00005Q79A.01.MZZZZZZZ.jpg', 'This is the movie that Leonardo DiCaprio received an Oscar nomination for, five years before Titanic. And, in fact, this is the movie that should have made him a star, he''s so good in it. Based on the novel by Peter Hedges (who adapted his own book) and directed by Lasse Hallström (My Life as a Dog), this is the funny, moody tale of a young man named Gilbert Grape (Johnny Depp) who lives at home in a small town with his 500-pound Momma (beautifully played by nonpro Darlene Cates), his mentally retarded younger brother Arnie (DiCaprio, utterly convincing), and his sisters. Not a lot happens');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('268', 'B00005Q79A', 'What''s Eating Gilbert Grape', 9.98, 'http://images.amazon.com/images/P/B00005Q79A.01.MZZZZZZZ.jpg', 'This is the movie that Leonardo DiCaprio received an Oscar nomination for, five years before Titanic. And, in fact, this is the movie that should have made him a star, he''s so good in it. Based on the novel by Peter Hedges (who adapted his own book) and directed by Lasse Hallstro(My Life as a Dog), this is the funny, moody tale of a young man named Gilbert Grape (Johnny Depp) who lives at home in a small town with his 500-pound Momma (beautifully played by nonpro Darlene Cates), his mentally retarded younger brother Arnie (DiCaprio, utterly convincing), and his sisters. Not a lot happens');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (268, 37)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (268, 8);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (268, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (268, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (268, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (268, 268, 13, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('269', 'B00005K3OT', 'Chocolat ', 19.99, 'http://images.amazon.com/images/P/B00005K3OT.01.MZZZZZZZ.jpg', 'With movies like Chocolat, it''s always best to relax your intellectual faculties and absorb the abundant sensual pleasures, be it the heart-stopping smile of chocolatier Juliette Binoche as she greets a new customer, an intoxicating cup of spiced hot cocoa, or the soothing guitar of an Irish gypsy played by Johnny Depp. Adapted by Robert Nelson Jacobs from Joanne Harris''s popular novel and lovingly directed by Lasse Hallström, the film covers familiar territory and deals in broad metaphors that even a child could comprehend, so it''s no surprise that some critics panned it with killjoy fervor. Their objections miss the point. Familiarity can be comforting and so can easy metaphors when placed in a fable that''s as warmly inviting as this one. Driven by fate, Vianne (Binoche) dr!
ifts into a tranquil French village with her daughter Anouk (Victoire Thivisol, from Ponette) in the winter of 1959. Her newly opened chocolatier is a source of attraction and fear, since Vianne''s ability to revive the villagers'' passions threatens to disrupt their repressive traditions. The pious mayor (Alfred Molina) sees Vianne as the enemy, and his war against her peaks with the arrival of "river rats" led by Roux (Depp), whose attraction to Vianne is immediate and reciprocal. Splendid subplots involve a battered wife (Lena Olin), a village elder (Judi Dench), and her estranged daughter (Carrie-Anne Moss), and while the film''s broader strokes may be regrettable (if not for Molina''s rich performance, the mayor would be a caricature), its subtleties are often sublime. Chocolat reminds you of life''s simple pleasures and invites you to enjoy them. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('269', 'B00005K3OT', 'Chocolat ', 19.99, 'http://images.amazon.com/images/P/B00005K3OT.01.MZZZZZZZ.jpg', 'With movies like Chocolat, it''s always best to relax your intellectual faculties and absorb the abundant sensual pleasures, be it the heart-stopping smile of chocolatier Juliette Binoche as she greets a new customer, an intoxicating cup of spiced hot cocoa, or the soothing guitar of an Irish gypsy played by Johnny Depp. Adapted by Robert Nelson Jacobs from Joanne Harris''s popular novel and lovingly directed by Lasse Hallstrom, the film covers familiar territory and deals in broad metaphors that even a child could comprehend, so it''s no surprise that some critics panned it with killjoy fervor. Their objections miss the point. Familiarity can be comforting and so can easy metaphors when placed in a fable that''s as warmly inviting as this one. Driven by fate, Vianne (Binoche) drifts !
into a tranquil French village with her daughter Anouk (Victoire Thivisol, from Ponette) in the winter of 1959. Her newly opened chocolatier is a source of attraction and fear, since Vianne''s ability to revive the villagers'' passions threatens to disrupt their repressive traditions. The pious mayor (Alfred Molina) sees Vianne as the enemy, and his war against her peaks with the arrival of "river rats" led by Roux (Depp), whose attraction to Vianne is immediate and reciprocal. Splendid subplots involve a battered wife (Lena Olin), a village elder (Judi Dench), and her estranged daughter (Carrie-Anne Moss), and while the film''s broader strokes may be regrettable (if not for Molina''s rich performance, the mayor would be a caricature), its subtleties are often sublime. Chocolat reminds you of life''s simple pleasures and invites you to enjoy them. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (269, 37)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (269, 8);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (269, 2);
@@ -2270,7 +2270,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (274, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (274, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (274, 274, 12, 21);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('275', 'B0002YLCG0', 'King Arthur ', 19.99, 'http://images.amazon.com/images/P/B0002YLCG0.01.MZZZZZZZ.jpg', 'It''s got a round table, some knights, and a noble warrior who rises to become King Arthur, but everything else about this revisionist legend is pure Hollywood. That''s not such a bad thing if you enjoyed Rob Roy, Braveheart, Gladiator, and Troy, and there''s some intriguing potential in presenting the "real" Arthur (played by Clive Owen) as a 5th-century soldier of Rome, assigned to defend Roman-imperial England against a hoard of invading Saxons (led by Stellan Skarsgård in hairy villain mode). As revamped history and "archaeological findings" would have us believe, Guinevere (Keira Knightley) is a warrior babe in face-paint and Lancelot (Ioan Gruffudd) is a nonentity who fades into the woodwork. Never mind! Best to enjoy the harsh, gloomy atmosphere of Irish locations, the rug!
gedness of Owen and his hearty supporting cast, and the entertaining nonsense of a Jerry Bruckheimer production that strips battle-ready Guinevere down to leather-strap S&M gear while all the men sport full-body armor. Hail to the queen, indeed! ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('275', 'B0002YLCG0', 'King Arthur ', 19.99, 'http://images.amazon.com/images/P/B0002YLCG0.01.MZZZZZZZ.jpg', 'It''s got a round table, some knights, and a noble warrior who rises to become King Arthur, but everything else about this revisionist legend is pure Hollywood. That''s not such a bad thing if you enjoyed Rob Roy, Braveheart, Gladiator, and Troy, and there''s some intriguing potential in presenting the "real" Arthur (played by Clive Owen) as a 5th-century soldier of Rome, assigned to defend Roman-imperial England against a hoard of invading Saxons (led by Stellan Skarsgard in hairy villain mode). As revamped history and "archaeological findings" would have us believe, Guinevere (Keira Knightley) is a warrior babe in face-paint and Lancelot (Ioan Gruffudd) is a nonentity who fades into the woodwork. Never mind! Best to enjoy the harsh, gloomy atmosphere of Irish locations, the ruggednes!
s of Owen and his hearty supporting cast, and the entertaining nonsense of a Jerry Bruckheimer production that strips battle-ready Guinevere down to leather-strap S&M gear while all the men sport full-body armor. Hail to the queen, indeed! ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (275, 38)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (275, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (275, 15);
@@ -2327,7 +2327,7 @@
insert into CATEGORIES (CATEGORY, NAME) values (51, 'Spoken / Comedy / Radio Shows');
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (281, 51);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (281, 281, 19, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('282', 'B00005JNQS', 'Robots ', 19.98, 'http://images.amazon.com/images/P/B00005JNQS.01.MZZZZZZZ.jpg', ' The delightful designs of William Joyce (writer/illustrator of such popular children''s books as George Shrinks and Bently & Egg) make Robots a joy to behold. The round, bouncy, and ramshackle forms of hero Rodney Copperbottom and his computer-animated friends are part of an ornate and daffy <table align=left cellpadding="6" cellspacing="0" > <tr><td align="center"> <img src="http://images.amazon.com/images/G/01/video/stills/robots/robots2-small.jpg" border=0 align=top> <br> <span class="tiny">Fender providing assistance. </span> </td></tr> </table>Rube-Goldberg universe of elaborate contraptions and gleaming metallic surfaces. Rodney (voiced with a hint-of-Scottish lilt by Ewan McGregor) is a young inventor who sets off for Robot City to work for Big Weld (Mel Brooks), the supreme inven!
tor of the mechanical world. But upon his arrival, Rodney discovers that Big Weld has disappeared, and the slick, shiny Ratchet (Greg Kinnear, As Good As It Gets) is phasing out the spare parts that lumpen robots need to function and replacing them with "upgrades"');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('282', 'B00005JNQS', 'Robots ', 19.98, 'http://images.amazon.com/images/P/B00005JNQS.01.MZZZZZZZ.jpg', ' The delightful designs of William Joyce (writer/illustrator of such popular children''s books as George Shrinks and Bently & Egg) make Robots a joy to behold. The round, bouncy, and ramshackle forms of hero Rodney Copperbottom and his computer-animated friends are part of an ornate and daffy Rube-Goldberg universe of elaborate contraptions and gleaming metallic surfaces. Rodney (voiced with a hint-of-Scottish lilt by Ewan McGregor) is a young inventor who sets off for Robot City to work for Big Weld (Mel Brooks), the supreme inventor of the mechanical world. But upon his arrival, Rodney discovers that Big Weld has disappeared, and the slick, shiny Ratchet (Greg Kinnear, As Good As It Gets) is phasing out the spare parts that lumpen robots need to function and replacing them with "upgrade!
s"');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (282, 39)
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (282, 43)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (282, 18);
@@ -2425,7 +2425,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (294, 12);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (294, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (294, 294, 70, 14);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('295', 'B00005JNTX', 'Sin City', 29.99, 'http://images.amazon.com/images/P/B00005JNTX.01.MZZZZZZZ.jpg', 'Brutal and breathtaking, Sin City is Robert Rodriguez''s stunningly realized vision of Frank Miller''s pulpy comic books. In the first of three separate but loosely related stories, Marv (Mickey Rourke in heavy makeup) tries to track down the killers of a woman who ended up dead in his bed. In the second story, Dwight''s (Clive Owen) attempt to defend a woman from a brutal abuser goes horribly wrong, and threatens to destroy the uneasy truce among the police, the mob, and the women of Old Town. Finally, an aging cop on his last day on the job (Bruce Willis) rescues a young girl from a kidnapper, but is himself thrown in jail. Years later, he has a chance to save her again. <table align=left cellpadding="6" cellspacing="0" > <tr><td align="center"> <img src="http://g-images.amazon.com/ima!
ges/G/01/books/Comics/robandmiller.gif" border=0 align=top> <br> <span class="tiny">Read our interview with Frank Miller. </span> </td></tr> </table> Based on three of Miller''s immensely popular and immensely gritty books (The Hard Goodbye, The Big Fat Kill, and That Yellow Bastard), Sin City is unquestionably the most faithful comic-book-based movie ever made. Each shot looks like a panel from its source material, and director Rodriguez (who refers to it as a "translation" rather than an adaptation) resigned from the Directors Guild so that Miller could share a directing credit. Like the books, it''s almost entirely in stark black and white with some occasional bursts of color (a woman''s red lips, a villain''s yellow face). The backgrounds are entirely digitally generated, yet not self-consciously so, and perfectly capture Miller''s gritty cityscape. And though most of Miller''s copious nudity is absent, the violence is unrelentingly present. That may be the biggest obs!
tacle to viewers who aren''t already fans of the books and who may hav
e been turned off by Kill Bill (whose director, Quentin Tarantino, helmed one scene of Sin City). In addition, it''s a bleak, desperate world in which the heroes are killers, corruption rules, and the women are almost all prostitutes or strippers. But Miller''s stories are riveting, and the huge cast');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('295', 'B00005JNTX', 'Sin City', 29.99, 'http://images.amazon.com/images/P/B00005JNTX.01.MZZZZZZZ.jpg', 'Brutal and breathtaking, Sin City is Robert Rodriguez''s stunningly realized vision of Frank Miller''s pulpy comic books. In the first of three separate but loosely related stories, Marv (Mickey Rourke in heavy makeup) tries to track down the killers of a woman who ended up dead in his bed. In the second story, Dwight''s (Clive Owen) attempt to defend a woman from a brutal abuser goes horribly wrong, and threatens to destroy the uneasy truce among the police, the mob, and the women of Old Town. Finally, an aging cop on his last day on the job (Bruce Willis) rescues a young girl from a kidnapper, but is himself thrown in jail. Years later, he has a chance to save her again. Based on three of Miller''s immensely popular and immensely gritty books (The Hard Goodbye, The Big Fat Kill, and T!
hat Yellow Bastard), Sin City is unquestionably the most faithful comic-book-based movie ever made. Each shot looks like a panel from its source material, and director Rodriguez (who refers to it as a "translation" rather than an adaptation) resigned from the Directors Guild so that Miller could share a directing credit. Like the books, it''s almost entirely in stark black and white with some occasional bursts of color (a woman''s red lips, a villain''s yellow face). The backgrounds are entirely digitally generated, yet not self-consciously so, and perfectly capture Miller''s gritty cityscape. And though most of Miller''s copious nudity is absent, the violence is unrelentingly present. That may be the biggest obstacle to viewers who aren''t already fans of the books and who may have been turned off by Kill Bill (whose director, Quentin Tarantino, helmed one scene of Sin City). In addition, it''s a bleak, desperate world in which the heroes are killers, corruption rules, and!
the women are almost all prostitutes or strippers. But Miller''s stor
ies are riveting, and the huge cast');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (295, 41)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (295, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (295, 15);
@@ -2474,7 +2474,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (300, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (300, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (300, 300, 82, 6);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('301', 'B000063V8R', 'Star Trek The Next Generation - The Complete Third Season', 69.98, 'http://images.amazon.com/images/P/B000063V8R.01.MZZZZZZZ.jpg', 'Star Trek: The Next Generation''s third year was an important development in syndicated television. After two shaky years, Paramount nonetheless decided the franchise still had plenty to do. Their confidence was bolstered by two significant factors. First, cast uncertainties were finally settled: Gates McFadden (Dr. Crusher) was back for good; Denise Crosby (Tasha Yar) regretted her first-year departure, and so contrived a return in the Emmy Award-winning "Yesterday''s Enterprise"; and Whoopi Goldberg happily continued her actor''s-scale contributions. Second, after the show had survived the previous year''s writers'' strike, new writing blood revitalized both characters and ideas: Data experienced fatherhood ("The Offspring"), Worf''s Klin!
gon heritage kick-started a huge story arc ("Sins of the Father"), and Picard got a saucy vacation ("Captain''s Holiday"). There were memorable star cameos: John de Lancie played more mischief alongside Corbin Bernsen ("Déjà Q"); Dwight Schultz played truant in a gentle warning about addiction ("Hollow Pursuits"); and pleasing fans even more was Mark Lenard as Spock''s dad ("Sarek"). The strongest evidence that TNG would continue for some time was the trend-setting cliffhanger finale. Fans and critics still agree that "The Best of Both Worlds" (properly introducing the Borg) was one of the greatest tricks ever pulled on TV to make audiences come back for more. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('301', 'B000063V8R', 'Star Trek The Next Generation - The Complete Third Season', 69.98, 'http://images.amazon.com/images/P/B000063V8R.01.MZZZZZZZ.jpg', 'Star Trek: The Next Generation''s third year was an important development in syndicated television. After two shaky years, Paramount nonetheless decided the franchise still had plenty to do. Their confidence was bolstered by two significant factors. First, cast uncertainties were finally settled: Gates McFadden (Dr. Crusher) was back for good; Denise Crosby (Tasha Yar) regretted her first-year departure, and so contrived a return in the Emmy Award-winning "Yesterday''s Enterprise"; and Whoopi Goldberg happily continued her actor''s-scale contributions. Second, after the show had survived the previous year''s writers'' strike, new writing blood revitalized both characters and ideas: Data experienced fatherhood ("The Offspring"), Worf''s Klin!
gon heritage kick-started a huge story arc ("Sins of the Father"), and Picard got a saucy vacation ("Captain''s Holiday"). There were memorable star cameos: John de Lancie played more mischief alongside Corbin Bernsen; Dwight Schultz played truant in a gentle warning about addiction ("Hollow Pursuits"); and pleasing fans even more was Mark Lenard as Spock''s dad ("Sarek"). The strongest evidence that TNG would continue for some time was the trend-setting cliffhanger finale. Fans and critics still agree that "The Best of Both Worlds" (properly introducing the Borg) was one of the greatest tricks ever pulled on TV to make audiences come back for more. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (301, 42)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (301, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (301, 4);
@@ -2518,7 +2518,7 @@
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (307, 42)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (307, 17);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (307, 307, 77, 5);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('308', 'B00004U12X', 'I, Claudius', 89.99, 'http://images.amazon.com/images/P/B00004U12X.01.MZZZZZZZ.jpg', 'This superbly acted, mordantly funny romp through 70 years or so of Roman history is one of the best-loved miniseries ever made, and deservedly so. Derek Jacobi plays Roman Emperor Claudius, who reflects in old age on his life and his remarkable family, giving us a history lesson that''s unlike anything you learned in school. The story begins in 24 B.C. during the reign of Augustus Caesar, Rome''s first emperor, and ends in A.D. 54 with Nero on the throne. In between, I, Claudius details the scheming, murder, madness, and lust that passed for politics in the early years of the Pax Romana. The biggest worm in the Roman apple is Augustus''s wife, Livia (the superb Siân Phillips), whose single-minded pursuit of power shapes the destiny of the Empire. With a carefully!
planted rumor here and a poisoned fig there, she gradually maneuvers her son, Tiberius, toward the throne, creating an atmosphere of suspicion and treachery that starts Rome on its helter-skelter slide into bloody chaos. Phillips somehow makes us understand this extraordinarily wicked woman. As she ages and her carefully wrought webs begin to unravel, it becomes clear that Livia has been as thoroughly poisoned by her own ambition as her victims were by her carefully prepared meals. Further acting honors go to George Baker as Tiberius, who resists but eventually succumbs to the destiny forced upon him by his mother, and to John Hurt as a hilarious and absolutely terrifying Caligula. In one breathtakingly tense scene, the mad Emperor performs a dance in drag, then asks Claudius to critique it, perfectly capturing the horror of a world where one wrong word means death, or worse. Jacobi is the perfect Claudius, hiding his intelligence behind a crippling stammer and shuffling !
around the edges of events');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('308', 'B00004U12X', 'I, Claudius', 89.99, 'http://images.amazon.com/images/P/B00004U12X.01.MZZZZZZZ.jpg', 'This superbly acted, mordantly funny romp through 70 years or so of Roman history is one of the best-loved miniseries ever made, and deservedly so. Derek Jacobi plays Roman Emperor Claudius, who reflects in old age on his life and his remarkable family, giving us a history lesson that''s unlike anything you learned in school. The story begins in 24 B.C. during the reign of Augustus Caesar, Rome''s first emperor, and ends in A.D. 54 with Nero on the throne. In between, I, Claudius details the scheming, murder, madness, and lust that passed for politics in the early years of the Pax Romana. The biggest worm in the Roman apple is Augustus''s wife, Livia (the superb Sian Phillips), whose single-minded pursuit of power shapes the destiny of the Empire. With a carefully planted rumor here a!
nd a poisoned fig there, she gradually maneuvers her son, Tiberius, toward the throne, creating an atmosphere of suspicion and treachery that starts Rome on its helter-skelter slide into bloody chaos. Phillips somehow makes us understand this extraordinarily wicked woman. As she ages and her carefully wrought webs begin to unravel, it becomes clear that Livia has been as thoroughly poisoned by her own ambition as her victims were by her carefully prepared meals. Further acting honors go to George Baker as Tiberius, who resists but eventually succumbs to the destiny forced upon him by his mother, and to John Hurt as a hilarious and absolutely terrifying Caligula. In one breathtakingly tense scene, the mad Emperor performs a dance in drag, then asks Claudius to critique it, perfectly capturing the horror of a world where one wrong word means death, or worse. Jacobi is the perfect Claudius, hiding his intelligence behind a crippling stammer and shuffling around the edges of e!
vents');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (308, 42)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (308, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (308, 11);
@@ -2601,7 +2601,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (318, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (318, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (318, 318, 40, 13);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('319', 'B000AMFEHC', 'Friends - The Complete Tenth Season', 44.98, 'http://images.amazon.com/images/P/B000AMFEHC.01.MZZZZZZZ.jpg', 'Throughout its phenomenal run, Friends demonstrated that familiarity doesn''t always breed contempt. But isn''t it nice that even after 10 years, we could still learn something new about these intimately observed characters? Tidbits revealed in the episode "The One Where the Stripper Cries": Ross (David Schwimmer) and Monica (Courtney Cox Arquette) used to entertain at family gatherings as Donny and Marie; ("Oh God, that''s right," remembers Rachel. "I blocked that out.") and Chandler (Matthew Perry) kissed Rachel (Jennifer Aniston) at a college party in the 1980s. <table align=left cellpadding="6" cellspacing="0"> <tr><td align="center"> <img src="http://ec1.images-amazon.com/images/P/B000AM4PBS.01._SCMZZZZZZZ_.jpg" border=0 align=top></a> <br>See the <span !
class="tiny">10 or more seasons club</span>. </td></tr> </table> The best was saved for "The Last One": At one time, Ross (David Schwimmer) pursued being a professional dancer ("Do you realize we almost made it 10 years without that coming up?," he remarks). Friends'' tenth season is all about life changes and closure. Monica and Chandler buy a house and make plans to adopt. Once New Age free spirit Phoebe (Lisa Kudrow) gets married. Rachel is offered a job in Paris, prompting Ross to finally proclaim his love. <table border=0 cellpadding=4 cellspacing=3 width=200 align="right"> <tr> <td><hr noshade size=1> <b class="h1"> View clips and vote for your favorite Friends moment. </b> <hr noshade size=1></td> </tr> </table> Two of Friends''s most invaluable players are granted worthy send-offs. Janice (Maggie Wheeler) resurfaces as a prospective homebuyer in the house next door to Monica and Chandler in "The One Where Estelle Dies," and Central Perk fixture Gunther (James!
Michael Tyler) at last professes his adoration of Rachel in "The Last
One." Christina Applegate makes a welcome return in "The One Where Rachel''s Sister Babysits" and Danny DeVito is the unlikely and very temperamental stripper in "The One Where the Stripper Cries." <table border=0 cellpadding=4 cellspacing=3 width=200 align="left"> <tr> <td><hr noshade size=1> <b class="h1"> Just friends? See our guide to who kissed whom on Friends. </b> <hr noshade size=1></td> </tr> </table> Greg Kinnear is at his smarmy best as Ross''s new girlfriend''s Nobel-prize-winning ex-boyfriend in "The One with Ross'' Grant." Dakota Fanning has a sweet scene with Joey (Matt LeBlanc) in "The One with Princess Consuela" and Anna Faris joins Paul Rudd (Phoebe''s husband Mike, a.k.a. Crap Bag in "Princess Consuela") as a recurring cast member in "The One with the Birth Mother." Friends'' final season quickly recovers from the Joey-Rachel misstep to find its consistent and satisfying groove. As each Friend turns in their key to the apartment each had shared at!
one time or another over the past 10 years in "The Last One," could Friends end on a happier or more poignant note? This final addition to the Friends DVD library, too, rises to the momentous occasion with a more generous package of features, including a lengthy gag reel and reflections from the ensemble. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('319', 'B000AMFEHC', 'Friends - The Complete Tenth Season', 44.98, 'http://images.amazon.com/images/P/B000AMFEHC.01.MZZZZZZZ.jpg', 'Throughout its phenomenal run, Friends demonstrated that familiarity doesn''t always breed contempt. But isn''t it nice that even after 10 years, we could still learn something new about these intimately observed characters? Tidbits revealed in the episode "The One Where the Stripper Cries": Ross (David Schwimmer) and Monica (Courtney Cox Arquette) used to entertain at family gatherings as Donny and Marie; ("Oh God, that''s right," remembers Rachel. "I blocked that out.") and Chandler (Matthew Perry) kissed Rachel (Jennifer Aniston) at a college party in the 1980s. The best was saved for "The Last One": At one time, Ross (David Schwimmer) pursued being a professional dancer ("Do you realize we almost made it 10 years without that coming up?," he remarks). Fri!
ends'' tenth season is all about life changes and closure. Monica and Chandler buy a house and make plans to adopt. Once New Age free spirit Phoebe (Lisa Kudrow) gets married. Rachel is offered a job in Paris, prompting Ross to finally proclaim his love. Two of Friends''s most invaluable players are granted worthy send-offs. Janice (Maggie Wheeler) resurfaces as a prospective homebuyer in the house next door to Monica and Chandler in "The One Where Estelle Dies," and Central Perk fixture Gunther (James Michael Tyler) at last professes his adoration of Rachel in "The Last One." Christina Applegate makes a welcome return in "The One Where Rachel''s Sister Babysits" and Danny DeVito is the unlikely and very temperamental stripper in "The One Where the Stripper Cries." Greg Kinnear is at his smarmy best as Ross''s new girlfriend''s Nobel-prize-winning ex-boyfriend in "The One with Ross'' Grant." Dakota Fanning has a sweet scene with Joey (Matt LeBlanc) in "The One with Princ!
ess Consuela" and Anna Faris joins Paul Rudd (Phoebe''s husband Mike,
a.k.a. Crap Bag in "Princess Consuela") as a recurring cast member in "The One with the Birth Mother." Friends'' final season quickly recovers from the Joey-Rachel misstep to find its consistent and satisfying groove. As each Friend turns in their key to the apartment each had shared at one time or another over the past 10 years in "The Last One," could Friends end on a happier or more poignant note? This final addition to the Friends DVD library, too, rises to the momentous occasion with a more generous package of features, including a lengthy gag reel and reflections from the ensemble. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (319, 44)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (319, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (319, 4);
@@ -2615,7 +2615,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (320, 16);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (320, 17);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (320, 320, 24, 13);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('321', 'B00005JOL4', 'Derailed ', 29.95, 'http://images.amazon.com/images/P/B00005JOL4.01.MZZZZZZZ.jpg', 'With a nasty villain and a plot twist that will take many viewers by surprise, Derailed is the kind of potboiler that''s enjoyable in spite of its flaws. It''s basically two-thirds of a good movie, with a convincing set-up and a barely plausible payoff that... well, you''ve just got to see it and decide for yourself. Like Fatal Attraction, it''s a good-enough thriller that turns infidelity into every man''s nightmare, beginning when Charles (Clive Owen), a well-to-do Chicago advertising director with a sickly, diabetic daughter and a slightly troubled marriage, has a chance encounter with Lucinda (Jennifer Aniston), a lovely and quick-witted financial advisor who''s also stuck in a marital rut. Their chemistry is instant (between both characters and stars), but their eventual hotel tryst !
is interrupted by a mugger (French actor Vincent Cassel at his vile, despicable best) who''s out to milk Charles for every dollar he''s got. Of course, one phone call to the police would solve everyone''s problems, but as he did with Collateral (albeit more convincingly), screenwriter Stuart Beattie turns up the tension with such manipulative skill that you''re willing to skate past the plot holes and go along for the ride. With lively supporting performances by rappers Xzibit and RZA, Derailed marks a commercially slick American debut for Swedish director Mikael Håfström, whose 2003 thriller Evil was a Best Foreign Film Oscar®-nominee. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('321', 'B00005JOL4', 'Derailed ', 29.95, 'http://images.amazon.com/images/P/B00005JOL4.01.MZZZZZZZ.jpg', 'With a nasty villain and a plot twist that will take many viewers by surprise, Derailed is the kind of potboiler that''s enjoyable in spite of its flaws. It''s basically two-thirds of a good movie, with a convincing set-up and a barely plausible payoff that... well, you''ve just got to see it and decide for yourself. Like Fatal Attraction, it''s a good-enough thriller that turns infidelity into every man''s nightmare, beginning when Charles (Clive Owen), a well-to-do Chicago advertising director with a sickly, diabetic daughter and a slightly troubled marriage, has a chance encounter with Lucinda (Jennifer Aniston), a lovely and quick-witted financial advisor who''s also stuck in a marital rut. Their chemistry is instant (between both characters and stars), but their eventual hotel tryst !
is interrupted by a mugger (French actor Vincent Cassel at his vile, despicable best) who''s out to milk Charles for every dollar he''s got. Of course, one phone call to the police would solve everyone''s problems, but as he did with Collateral (albeit more convincingly), screenwriter Stuart Beattie turns up the tension with such manipulative skill that you''re willing to skate past the plot holes and go along for the ride. With lively supporting performances by rappers Xzibit and RZA, Derailed marks a commercially slick American debut for Swedish director Mikael, whose 2003 thriller Evil was a Best Foreign Film Oscar-nominee. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (321, 44)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (321, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (321, 11);
@@ -2631,7 +2631,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (322, 16);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (322, 17);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (322, 322, 32, 1);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('323', 'B000AP04L0', 'Office Space - Special Edition with Flair ', 19.98, 'http://images.amazon.com/images/P/B000AP04L0.01.MZZZZZZZ.jpg', 'Ever spend eight hours in a "Productivity Bin"? Ever had worries about layoffs? Ever had the urge to demolish a temperamental printer or fax machine? Ever had to endure a smarmy, condescending boss? Then Office Space should hit pretty close to home for you. Peter (Ron Livingston) spends the day doing stupefyingly dull computer work in a cubicle. He goes home to an apartment sparsely furnished by IKEA and Target, then starts for a maddening commute to work again in the morning. His coworkers in the cube farm are an annoying lot, his boss is a snide, patronizing jerk, and his days are consumed with tedium. In desperation, he turns to career hypnotherapy, but when his hypno-induced relaxation takes hold, there''s no shutting it off. Layoffs are in the air at !
his corporation, and with two coworkers (both of whom are slated for the chute) he devises a scheme to skim funds from company accounts. The scheme soon snowballs, however, throwing the three into a panic until the unexpected happens and saves the day. Director Mike Judge has come up with a spot-on look at work in corporate America circa 1999. With well-drawn characters and situations instantly familiar to the white-collar milieu, he captures the joylessness of many a cube denizen''s work life to a T. Jennifer Aniston plays Peter''s love interest, a waitress at Chotchkie''s, a generic beer-and-burger joint à la Chili''s, and Diedrich Bader (The Drew Carey Show) has a minor but hilarious turn as Peter''s mustached, long-haired, drywall-installin'' neighbor. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('323', 'B000AP04L0', 'Office Space - Special Edition with Flair ', 19.98, 'http://images.amazon.com/images/P/B000AP04L0.01.MZZZZZZZ.jpg', 'Ever spend eight hours in a "Productivity Bin"? Ever had worries about layoffs? Ever had the urge to demolish a temperamental printer or fax machine? Ever had to endure a smarmy, condescending boss? Then Office Space should hit pretty close to home for you. Peter (Ron Livingston) spends the day doing stupefyingly dull computer work in a cubicle. He goes home to an apartment sparsely furnished by IKEA and Target, then starts for a maddening commute to work again in the morning. His coworkers in the cube farm are an annoying lot, his boss is a snide, patronizing jerk, and his days are consumed with tedium. In desperation, he turns to career hypnotherapy, but when his hypno-induced relaxation takes hold, there''s no shutting it off. Layoffs are in the air at !
his corporation, and with two coworkers (both of whom are slated for the chute) he devises a scheme to skim funds from company accounts. The scheme soon snowballs, however, throwing the three into a panic until the unexpected happens and saves the day. Director Mike Judge has come up with a spot-on look at work in corporate America circa 1999. With well-drawn characters and situations instantly familiar to the white-collar milieu, he captures the joylessness of many a cube denizen''s work life to a T. Jennifer Aniston plays Peter''s love interest, a waitress at Chotchkie''s, a generic beer-and-burger joint a la Chili''s, and Diedrich Bader (The Drew Carey Show) has a minor but hilarious turn as Peter''s mustached, long-haired, drywall-installin'' neighbor. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (323, 44)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (323, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (323, 8);
@@ -2668,7 +2668,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (327, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (327, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (327, 327, 13, 3);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('328', 'B00003CXTS', 'Save the Last Dance', 12.98, 'http://images.amazon.com/images/P/B00003CXTS.01.MZZZZZZZ.jpg', 'Save the Last Dance enjoyed a profitable release in early 2001, with box-office earnings that exceeded anyone''s expectations. Its performance illustrates the staying power of a formulaic movie that avoids the pitfalls and clichés that would otherwise render it forgettable. Since there''s nothing new here, you''ll appreciate the original quirks in a character-based plot that''s just around the corner from Flashdance, and just as familiar. Sara (Julia Stiles) gave up a promising ballet career when her mother was killed while rushing to attend her daughter''s crucial audition to Juilliard; Sara blames herself for the accident, and at her new, mostly African American high school in Chicago, she''s uncertain of her future. Derek (Sean Patrick Thomas) has no such doubts; his!
own future is bright, and his attraction to Sara is immediate; they connect (predictably), and Sara''s dormant funk emerges, with Derek''s coaching, as she learns hip-hop dancing in a local club. Obligatory subplots are equally routine: Derek''s sister (Kerry Washington) is a single mom struggling with her child''s absentee father; Derek''s best friend (Fredro Starr) feels trapped in his gangsta lifestyle; and Sara''s once-estranged father (Terry Kinney) is doing his best to correct past mistakes. Within the confines of this standard follow-your-dream drama, director Thomas Carter capitalizes on a script that allows these characters to be real, intelligent, and thoughtful about their lives and their futures. It''s obvious that Stiles''s dancing was intercut with that of a professional double, but that illusion hardly matters when the rest of the movie''s so earnestly positive and genuine. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('328', 'B00003CXTS', 'Save the Last Dance', 12.98, 'http://images.amazon.com/images/P/B00003CXTS.01.MZZZZZZZ.jpg', 'Save the Last Dance enjoyed a profitable release in early 2001, with box-office earnings that exceeded anyone''s expectations. Its performance illustrates the staying power of a formulaic movie that avoids the pitfalls and cliches that would otherwise render it forgettable. Since there''s nothing new here, you''ll appreciate the original quirks in a character-based plot that''s just around the corner from Flashdance, and just as familiar. Sara (Julia Stiles) gave up a promising ballet career when her mother was killed while rushing to attend her daughter''s crucial audition to Juilliard; Sara blames herself for the accident, and at her new, mostly African American high school in Chicago, she''s uncertain of her future. Derek (Sean Patrick Thomas) has no such doubts; his own fu!
ture is bright, and his attraction to Sara is immediate; they connect (predictably), and Sara''s dormant funk emerges, with Derek''s coaching, as she learns hip-hop dancing in a local club. Obligatory subplots are equally routine: Derek''s sister (Kerry Washington) is a single mom struggling with her child''s absentee father; Derek''s best friend (Fredro Starr) feels trapped in his gangsta lifestyle; and Sara''s once-estranged father (Terry Kinney) is doing his best to correct past mistakes. Within the confines of this standard follow-your-dream drama, director Thomas Carter capitalizes on a script that allows these characters to be real, intelligent, and thoughtful about their lives and their futures. It''s obvious that Stiles''s dancing was intercut with that of a professional double, but that illusion hardly matters when the rest of the movie''s so earnestly positive and genuine. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (328, 45)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (328, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (328, 11);
@@ -2783,7 +2783,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (344, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (344, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (344, 344, 49, 15);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('345', 'B00005JLO2', 'The Four Feathers ', 9.98, 'http://images.amazon.com/images/P/B00005JLO2.01.MZZZZZZZ.jpg', 'The seventh filming of A.E.W. Mason''s classic 1902 novel, this near-epic production of The Four Feathers looks great, sounds great, and feels rather average. It would be difficult to diminish the rousing adventure of Mason''s novel, and director Shekhar Kapur (Elizabeth) certainly gets more bang for his buck, with massive battle scenes and rugged, sun-baked harshness enhanced by Robert Richardson''s masterful cinematography. Kapur preserves the universal appeal of the story, set in the 1880s, in which a promising soldier (Heath Ledger) resigns on the eve of battle in Britain''s Sudanese campaign, is labeled a coward by his fiancée (Kate Hudson), and redeems himself by posing as a Muslim warrior to rescue his best friend Jack (Wes Bentley) from certain death in the desert. Fo!
r all its heroics, however, the film seems oddly passionless; Djimon Hounsou is excellent as Ledger''s desert guardian, but these young Hollywood stars lack the authenticity of Zoltan Korda''s 1939 film, which remains the definitive version. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('345', 'B00005JLO2', 'The Four Feathers ', 9.98, 'http://images.amazon.com/images/P/B00005JLO2.01.MZZZZZZZ.jpg', 'The seventh filming of A.E.W. Mason''s classic 1902 novel, this near-epic production of The Four Feathers looks great, sounds great, and feels rather average. It would be difficult to diminish the rousing adventure of Mason''s novel, and director Shekhar Kapur (Elizabeth) certainly gets more bang for his buck, with massive battle scenes and rugged, sun-baked harshness enhanced by Robert Richardson''s masterful cinematography. Kapur preserves the universal appeal of the story, set in the 1880s, in which a promising soldier (Heath Ledger) resigns on the eve of battle in Britain''s Sudanese campaign, is labeled a coward by his fiancee (Kate Hudson), and redeems himself by posing as a Muslim warrior to rescue his best friend Jack (Wes Bentley) from certain death in the desert. For all!
its heroics, however, the film seems oddly passionless; Djimon Hounsou is excellent as Ledger''s desert guardian, but these young Hollywood stars lack the authenticity of Zoltan Korda''s 1939 film, which remains the definitive version. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (345, 47)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (345, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (345, 11);
@@ -2830,7 +2830,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (350, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (350, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (350, 350, 7, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('351', '0783230559', 'Henry & June', 9.99, 'http://images.amazon.com/images/P/0783230559.01.MZZZZZZZ.jpg', 'Anaïs Nin (Maria de Medeiros) is a young woman in 1930s Paris whose husband is slowly defecting from art to working in a bank, leaving her very bored. When the then-unpublished Brooklyn writer Henry Miller (Fred Ward) enters her life, she embarks on a journey of seduction and sexual exploration that eventually leads from the writer to his wife, June (Uma Thurman), who finances her husband''s life in Paris so he may praise her beauty in his writing. Unhappy with her husband''s writing and her lovers'' affair, June enters a jealous rage, forcing Henry into suffering-artist mode and Nin back to her husband. Despite having one of the more erotic scenes of the 1990s, between Nin and June, the film does not live up to its subject, largely due to a mediocre screenplay and flawed directio!
n. The strength of the original material and Medeiros''s decidedly unflawed performance, however, make it worth viewing. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('351', '0783230559', 'Henry & June', 9.99, 'http://images.amazon.com/images/P/0783230559.01.MZZZZZZZ.jpg', 'Anais Nin (Maria de Medeiros) is a young woman in 1930s Paris whose husband is slowly defecting from art to working in a bank, leaving her very bored. When the then-unpublished Brooklyn writer Henry Miller (Fred Ward) enters her life, she embarks on a journey of seduction and sexual exploration that eventually leads from the writer to his wife, June (Uma Thurman), who finances her husband''s life in Paris so he may praise her beauty in his writing. Unhappy with her husband''s writing and her lovers'' affair, June enters a jealous rage, forcing Henry into suffering-artist mode and Nin back to her husband. Despite having one of the more erotic scenes of the 1990s, between Nin and June, the film does not live up to its subject, largely due to a mediocre screenplay and flawed direction. Th!
e strength of the original material and Medeiros''s decidedly unflawed performance, however, make it worth viewing. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (351, 48)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (351, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (351, 11);
@@ -2894,7 +2894,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (359, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (359, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (359, 359, 94, 0);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('360', 'B00005JG6N', 'My Best Friend''s Wedding ', 14.94, 'http://images.amazon.com/images/P/B00005JG6N.01.MZZZZZZZ.jpg', 'One of the best romantic comedies of the 1990s, My Best Friend''s Wedding not only gave Julia Roberts a delightful vehicle for her crowd-pleasing comeback, but it further distinguished itself by avoiding the conventional plotting of the genre. Julia plays a prominent Chicago restaurant critic whose best friend (Dermot Mulroney) is a former lover from her college days with whom she''d made a binding pact: if neither of them were married by the age of 28, they''d marry each other. Just when they''re about to reach the deadline of their agreement, Mulroney arrives in Chicago to introduce Roberts to his seemingly perfect fiancée (Cameron Diaz) and announce their wedding in just three days. That leaves the shocked Julia with just three short days to sabotage the wedding!
and marry the man she now realizes she''s loved all along. With potential heartbreak waiting in the wings, she''ll either get what she wants or pay the price for her selfish behavior, and Ronald Bass''s cleverly constructed screenplay keeps us guessing to the very end. Rupert Everett scored rave reviews for his scene-stealing performance as Robert''s gay friend who goes along with her scheming (but only so far), and even as she makes her character''s needy desperation disarmingly appealing, Roberts wisely allows Diaz to capitalize on her charming time in the spotlight. As the romantic outcome remains uncertain, the viewer is held in a state of giddy suspense, and director P.J. Hogan pulls off some hilarious scenes (like a restaurant full of people singing the Dionne Warwick hit "I Say a Little Prayer") that could easily have fallen flat in the hands of a less talented filmmaker. It''s no surprise that this was one of the box-office smashes of 1997. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('360', 'B00005JG6N', 'My Best Friend''s Wedding ', 14.94, 'http://images.amazon.com/images/P/B00005JG6N.01.MZZZZZZZ.jpg', 'One of the best romantic comedies of the 1990s, My Best Friend''s Wedding not only gave Julia Roberts a delightful vehicle for her crowd-pleasing comeback, but it further distinguished itself by avoiding the conventional plotting of the genre. Julia plays a prominent Chicago restaurant critic whose best friend (Dermot Mulroney) is a former lover from her college days with whom she''d made a binding pact: if neither of them were married by the age of 28, they''d marry each other. Just when they''re about to reach the deadline of their agreement, Mulroney arrives in Chicago to introduce Roberts to his seemingly perfect fiancee (Cameron Diaz) and announce their wedding in just three days. That leaves the shocked Julia with just three short days to sabotage the wedding and ma!
rry the man she now realizes she''s loved all along. With potential heartbreak waiting in the wings, she''ll either get what she wants or pay the price for her selfish behavior, and Ronald Bass''s cleverly constructed screenplay keeps us guessing to the very end. Rupert Everett scored rave reviews for his scene-stealing performance as Robert''s gay friend who goes along with her scheming (but only so far), and even as she makes her character''s needy desperation disarmingly appealing, Roberts wisely allows Diaz to capitalize on her charming time in the spotlight. As the romantic outcome remains uncertain, the viewer is held in a state of giddy suspense, and director P.J. Hogan pulls off some hilarious scenes (like a restaurant full of people singing the Dionne Warwick hit "I Say a Little Prayer") that could easily have fallen flat in the hands of a less talented filmmaker. It''s no surprise that this was one of the box-office smashes of 1997. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (360, 49)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (360, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (360, 8);
@@ -2941,7 +2941,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (365, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (365, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (365, 365, 48, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('366', 'B000ASDFGI', 'Bewitched', 19.94, 'http://images.amazon.com/images/P/B000ASDFGI.01.MZZZZZZZ.jpg', 'As one of many in the ongoing trend of resurrecting old TV shows and turning them into contemporary Hollywood product, Bewitched tries awfully hard to distinguish itself. It succeeds in lots of surprising ways, not least of which is the star power brought by Nicole Kidman and Will Ferrell. Even if they don''t create the kind of romantic chemistry that would have elevated the already high concept, they act as delightful foils to each other, but more often to themselves. The conceit of this Bewitched is that it''s a self-reflexive look at the entertainment business, with Ferrell playing Jack Wyatt, an actor starring in an updated version of the classic TV show. Out of favor with the Hollywood elite and desperately in need of a hit, he insists on an unknown to play Samantha, as he wants the !
show to be about him, since if something doesn''t come his way soon, he''s going to be hearing a lot of no''s, despite the yes-men surrounding him. While his agent (Jason Schwartzman in hilarious high Hollywood sleaze mode) gets him the "unknown Samantha" deal, it''s Jack himself who discovers his own leading lady in the delightful figure of Isabel Bigalow (Kidman), who possesses just the right nose wiggle, not to mention other wiggles. But wouldn''t you know it, Isabel really is a witch, and exactly the kind of "good" witch trying to rely less on her magical powers that Samantha Stevens was back in her "real" world. Instead of a cranky mother like Endora, Isabel has a distinguished father, Nigel (Michael Caine) who lurks around her as a constant reminder that she can''t be who she''s not (a mere mortal), and she certainly can''t be the star of some zany TV show. As the plot thickens and the movie''s reflexivity grows more convoluted, Nigel falls for the non-witch actres!
s who plays Endora (Shirley MacLaine), and Jack and Isabel fall for ea
ch other. Here''s where the Ferrell/Kidman gel doesn’t quite become aspic, but her perkiness (I mean, come on, it is Nicole Kidman, for crying out loud) and his goofiness (Ferrell is at his peak of intelligent bumbling) are more than enough to make the entirety of the proceedings a delectable trifle. Director Nora Ephron has fun skewering her own business in the script she co-wrote with her sister Delia, and her eye for quality craft makes everything sparkle as it should. Even if we have yet to see the definitive remake of an old TV show on the big screen, at least Bewitched is well more than run-of-the-mill as so many adaptations have been, and so many will be. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('366', 'B000ASDFGI', 'Bewitched', 19.94, 'http://images.amazon.com/images/P/B000ASDFGI.01.MZZZZZZZ.jpg', 'As one of many in the ongoing trend of resurrecting old TV shows and turning them into contemporary Hollywood product, Bewitched tries awfully hard to distinguish itself. It succeeds in lots of surprising ways, not least of which is the star power brought by Nicole Kidman and Will Ferrell. Even if they don''t create the kind of romantic chemistry that would have elevated the already high concept, they act as delightful foils to each other, but more often to themselves. The conceit of this Bewitched is that it''s a self-reflexive look at the entertainment business, with Ferrell playing Jack Wyatt, an actor starring in an updated version of the classic TV show. Out of favor with the Hollywood elite and desperately in need of a hit, he insists on an unknown to play Samantha, as he wants the !
show to be about him, since if something doesn''t come his way soon, he''s going to be hearing a lot of no''s, despite the yes-men surrounding him. While his agent (Jason Schwartzman in hilarious high Hollywood sleaze mode) gets him the "unknown Samantha" deal, it''s Jack himself who discovers his own leading lady in the delightful figure of Isabel Bigalow (Kidman), who possesses just the right nose wiggle, not to mention other wiggles. But wouldn''t you know it, Isabel really is a witch, and exactly the kind of "good" witch trying to rely less on her magical powers that Samantha Stevens was back in her "real" world. Instead of a cranky mother like Endora, Isabel has a distinguished father, Nigel (Michael Caine) who lurks around her as a constant reminder that she can''t be who she''s not (a mere mortal), and she certainly can''t be the star of some zany TV show. As the plot thickens and the movie''s reflexivity grows more convoluted, Nigel falls for the non-witch actres!
s who plays Endora (Shirley MacLaine), and Jack and Isabel fall for ea
ch other. Here''s where the Ferrell/Kidman gel doesn''t quite become aspic, but her perkiness (I mean, come on, it is Nicole Kidman, for crying out loud) and his goofiness (Ferrell is at his peak of intelligent bumbling) are more than enough to make the entirety of the proceedings a delectable trifle. Director Nora Ephron has fun skewering her own business in the script she co-wrote with her sister Delia, and her eye for quality craft makes everything sparkle as it should. Even if we have yet to see the definitive remake of an old TV show on the big screen, at least Bewitched is well more than run-of-the-mill as so many adaptations have been, and so many will be. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (366, 50)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (366, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (366, 8);
@@ -2957,7 +2957,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (367, 19);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (367, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (367, 367, 11, 17);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('368', 'B000E33VWW', 'Capote', 28.95, 'http://images.amazon.com/images/P/B000E33VWW.01.MZZZZZZZ.jpg', 'Bolstered by an Oscar®-caliber performance by Philip Seymour Hoffman in the title role, Capote ranked highly among the best films of 2005. Written by actor/screenwriter Dan Futterman and based on selected chapters from the biography by Gerald Clarke, this mercilessly perceptive drama shows how Truman Capote brought about his own self-destruction in the course of writing In Cold Blood, the "nonfiction novel" that was immediately acclaimed as a literary milestone. After learning of brutal killings in rural Holcomb, Kansas, in November 1959, Capote gained the confidence of captured killers Perry Smith (Clifton Collins, Jr.) and Dick Hickock (Mark Pellegrino) in an effort to tell their story, but he ultimately sacrificed his soul in the process of writing his greatest book. Hoffman transcen!
ds mere mimicry to create an utterly authentic, psychologically tormented portrait of an insincere artist who was not above lying and manipulation to get what he needed. Bennett Miller''s intimate direction focuses on the consequences of Capote''s literary ambition, tempered by an equally fine performance by Catherine Keener as Harper Lee, Capote''s friend and the author of To Kill a Mockingbird, who served as Capote''s quiet voice of conscience. Spanning the seven-year period between the Kansas murders and the publication of In Cold Blood in 1966, Capote reveals the many faces of a writer who grew too close to his subjects, losing his moral compass as they were fitted with a hangman''s noose. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('368', 'B000E33VWW', 'Capote', 28.95, 'http://images.amazon.com/images/P/B000E33VWW.01.MZZZZZZZ.jpg', 'Bolstered by an Oscar-caliber performance by Philip Seymour Hoffman in the title role, Capote ranked highly among the best films of 2005. Written by actor/screenwriter Dan Futterman and based on selected chapters from the biography by Gerald Clarke, this mercilessly perceptive drama shows how Truman Capote brought about his own self-destruction in the course of writing In Cold Blood, the "nonfiction novel" that was immediately acclaimed as a literary milestone. After learning of brutal killings in rural Holcomb, Kansas, in November 1959, Capote gained the confidence of captured killers Perry Smith (Clifton Collins, Jr.) and Dick Hickock (Mark Pellegrino) in an effort to tell their story, but he ultimately sacrificed his soul in the process of writing his greatest book. Hoffman transcends mer!
e mimicry to create an utterly authentic, psychologically tormented portrait of an insincere artist who was not above lying and manipulation to get what he needed. Bennett Miller''s intimate direction focuses on the consequences of Capote''s literary ambition, tempered by an equally fine performance by Catherine Keener as Harper Lee, Capote''s friend and the author of To Kill a Mockingbird, who served as Capote''s quiet voice of conscience. Spanning the seven-year period between the Kansas murders and the publication of In Cold Blood in 1966, Capote reveals the many faces of a writer who grew too close to his subjects, losing his moral compass as they were fitted with a hangman''s noose. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (368, 51)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (368, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (368, 11);
@@ -2996,7 +2996,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (372, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (372, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (372, 372, 40, 14);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('373', 'B00007L4OB', 'Living in Oblivion ', 29.95, 'http://images.amazon.com/images/P/B00007L4OB.01.MZZZZZZZ.jpg', 'You won''t find a smarter, more amusing, or more accurate send-up of low-budget filmmaking than Tom DiCillo''s 1995 independent feature, Living in Oblivion, wherein a motley cast of would-be artistes blunders its way through a day on the set. Steve Buscemi plays goateed Nick Reve, a harried, sweating director whose crew of numbskulls and egotists seems hell-bent on ruining his film. The trials and tribulations of independent filmmaking are not foreign material for writer-director DiCillo, who cut his teeth as Jim Jarmusch''s cinematographer on 1985''s Stranger Than Paradise before going on to direct his own work, such as the offbeat 1992 comedy Johnny Suede. Like that film, Living in Oblivion rides a precariously thin line between the real and the surreal, featuring a midget act!
or and an exploding smoke-effects machine, as well as a ridiculously narcissistic Brad Pittesque character played by James Le Gros. While films like Get Shorty, François Truffaut''s Day for Night, and Jean-Luc Godard''s Contempt suggest that moviemaking is hip and glamorous, Living in Oblivion will have none of that. The film within the film feels like a director''s primer on what not to do, and this modest-budget gem both lovingly and caustically strips the "cool" veneer from the filmmaking process. They should show this one to kids thinking of entering film school. It might make them think better of it. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('373', 'B00007L4OB', 'Living in Oblivion ', 29.95, 'http://images.amazon.com/images/P/B00007L4OB.01.MZZZZZZZ.jpg', 'You won''t find a smarter, more amusing, or more accurate send-up of low-budget filmmaking than Tom DiCillo''s 1995 independent feature, Living in Oblivion, wherein a motley cast of would-be artistes blunders its way through a day on the set. Steve Buscemi plays goateed Nick Reve, a harried, sweating director whose crew of numbskulls and egotists seems hell-bent on ruining his film. The trials and tribulations of independent filmmaking are not foreign material for writer-director DiCillo, who cut his teeth as Jim Jarmusch''s cinematographer on 1985''s Stranger Than Paradise before going on to direct his own work, such as the offbeat 1992 comedy Johnny Suede. Like that film, Living in Oblivion rides a precariously thin line between the real and the surreal, featuring a midget act!
or and an exploding smoke-effects machine, as well as a ridiculously narcissistic Brad Pittesque character played by James Le Gros. While films like Get Shorty, Francois Truffaut''s Day for Night, and Jean-Luc Godard''s Contempt suggest that moviemaking is hip and glamorous, Living in Oblivion will have none of that. The film within the film feels like a director''s primer on what not to do, and this modest-budget gem both lovingly and caustically strips the "cool" veneer from the filmmaking process. They should show this one to kids thinking of entering film school. It might make them think better of it. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (373, 51)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (373, 15);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (373, 7);
@@ -3004,7 +3004,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (373, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (373, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (373, 373, 85, 12);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('374', 'B00007AJF8', 'Being John Malkovich ', 14.98, 'http://images.amazon.com/images/P/B00007AJF8.01.MZZZZZZZ.jpg', 'While too many movies suffer the fate of creative bankruptcy, Being John Malkovich is a refreshing study in contrast, so bracingly original that you''ll want to send director Spike Jonze and screenwriter Charlie Kaufman a thank-you note for restoring your faith in the enchantment of film. Even if it ultimately serves little purpose beyond the thrill of comedic invention, this demented romance is gloriously entertaining, spilling over with ideas that tickle the brain and even touch the heart. That''s to be expected in a movie that dares to ponder the existential dilemma of a forlorn puppeteer (John Cusack) who discovers a metaphysical portal into the brain of actor John Malkovich. The puppeteer''s working as a file clerk on the seventh-and-a-half floor of a Manhattan o!
ffice building; this idea alone might serve as the comedic basis for an entire film, but Jonze and Kaufman are just getting started. Add a devious coworker (Catherine Keener), Cusack''s dowdy wife (a barely recognizable Cameron Diaz), and a business scheme to capitalize on the thrill of being John Malkovich, and you''ve got a movie that just gets crazier as it plays by its own outrageous rules. Malkovich himself is the film''s pièce de résistance, riffing on his own persona with obvious delight and');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('374', 'B00007AJF8', 'Being John Malkovich ', 14.98, 'http://images.amazon.com/images/P/B00007AJF8.01.MZZZZZZZ.jpg', 'While too many movies suffer the fate of creative bankruptcy, Being John Malkovich is a refreshing study in contrast, so bracingly original that you''ll want to send director Spike Jonze and screenwriter Charlie Kaufman a thank-you note for restoring your faith in the enchantment of film. Even if it ultimately serves little purpose beyond the thrill of comedic invention, this demented romance is gloriously entertaining, spilling over with ideas that tickle the brain and even touch the heart. That''s to be expected in a movie that dares to ponder the existential dilemma of a forlorn puppeteer (John Cusack) who discovers a metaphysical portal into the brain of actor John Malkovich. The puppeteer''s working as a file clerk on the seventh-and-a-half floor of a Manhattan o!
ffice building; this idea alone might serve as the comedic basis for an entire film, but Jonze and Kaufman are just getting started. Add a devious coworker (Catherine Keener), Cusack''s dowdy wife (a barely recognizable Cameron Diaz), and a business scheme to capitalize on the thrill of being John Malkovich, and you''ve got a movie that just gets crazier as it plays by its own outrageous rules. Malkovich himself is the film''s piece de resistance, riffing on his own persona with obvious delight and');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (374, 51)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (374, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (374, 8);
@@ -3020,7 +3020,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (375, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (375, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (375, 375, 20, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('376', 'B000021Y77', 'Run Lola Run', 19.94, 'http://images.amazon.com/images/P/B000021Y77.01.MZZZZZZZ.jpg', 'It''s difficult to create a film that''s fast paced, exciting, and aesthetically appealing without diluting its dialogue. Run Lola Run, directed and written by Tom Tykwer, is an enchanting balance of pace and narrative, creating a universal parable that leaps over cultural barriers. This is the story of young Lola (Franka Potente) and her boyfriend Manni (Moritz Bleibtreu). In the space of 20 minutes, they must come up with 100,000 deutsche marks to pay back a seedy gangster, who will be less than forgiving when he finds out that Manni incompetently lost his cash to an opportunistic vagrant. Lola, confronted with one obstacle after another, rides an emotional roller coaster in her high-speed efforts to help the hapless Manni');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('376', 'B000021Y77', 'Run Lola Run', 19.94, 'http://images.amazon.com/images/P/B000021Y77.01.MZZZZZZZ.jpg', 'It''s difficult to create a film that''s fast paced, exciting, and aesthetically appealing without diluting its dialogue. Run Lola Run, directed and written by Tom Tykwer, is an enchanting balance of pace and narrative, creating a universal parable that leaps over cultural barriers. This is the story of young Lola (Franka Potente) and her boyfriend Manni (Moritz Bleibtreu). In the space of 20 minutes, they must come up with 100,000 deutsche marks to pay back a seedy gangster, who will be less than forgiving when he finds out that Manni incompetently lost his cash to an opportunistic vagrant. Lola, confronted with one obstacle after another, rides an emotional roller coaster in her high-speed efforts to help the hapless Manni');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (376, 52)
insert into CATEGORIES (CATEGORY, NAME) values (52, 'Foreign');
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (376, 52);
@@ -3107,7 +3107,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (385, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (385, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (385, 385, 90, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('386', 'B0000399WI', 'The Shawshank Redemption', 19.98, 'http://images.amazon.com/images/P/B0000399WI.01.MZZZZZZZ.jpg', 'When this popular prison drama was released in 1994, some critics complained that the movie was too long (142 minutes) to sustain its story. Those complaints miss the point, because the passage of time is crucial to this story about patience, the squeaky wheels of justice, and the growth of a life-long friendship. Only when the film reaches its final, emotionally satisfying scene do you fully understand why writer-director Frank Darabont (adapting a novella by Stephen King) allows the story to unfold at its necessary pace, and the effect is dramatically rewarding. Tim Robbins plays a banker named Andy who''s sent to Shawshank Prison on a murder charge, but as he gets to know a life-term prisoner named Red (Morgan Freeman), we realize there''s reason to believe the bank!
er''s crime was justifiable. We also realize that Andy''s calm, quiet exterior hides a great reserve of patience and fortitude, and Red comes to admire this mild-mannered man who first struck him as weak and unfit for prison life. So it is that The Shawshank Redemption builds considerable impact as a prison drama that defies the conventions of the genre (violence, brutality, riots) to illustrate its theme of faith, friendship, and survival. Nominated for seven Academy Awards including Best Picture, Actor, and Screenplay, it''s a remarkable film that signaled the arrival of a promising new filmmaker');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('386', 'B0000399WI', 'The Shawshank Redemption', 19.98, 'http://images.amazon.com/images/P/B0000399WI.01.MZZZZZZZ.jpg', 'When this popular prison drama was released in 1994, some critics complained that the movie was too long (142 minutes) to sustain its story. Those complaints miss the point, because the passage of time is crucial to this story about patience, the squeaky wheels of justice, and the growth of a life-long friendship. Only when the film reaches its final, emotionally satisfying scene do you fully understand why writer-director Frank Darabont (adapting a novella by Stephen King) allows the story to unfold at its necessary pace, and the effect is dramatically rewarding. Tim Robbins plays a banker named Andy who''s sent to Shawshank Prison on a murder charge, but as he gets to know a life-term prisoner named Red (Morgan Freeman), we realize there''s reason to believe the banker''s!
crime was justifiable. We also realize that Andy''s calm, quiet exterior hides a great reserve of patience and fortitude, and Red comes to admire this mild-mannered man who first struck him as weak and unfit for prison life. So it is that The Shawshank Redemption builds considerable impact as a prison drama that defies the conventions of the genre (violence, brutality, riots) to illustrate its theme of faith, friendship, and survival. Nominated for seven Academy Awards including Best Picture, Actor, and Screenplay, it''s a remarkable film that signaled the arrival of a promising new filmmaker');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (386, 54)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (386, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (386, 11);
@@ -3135,7 +3135,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (389, 22);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (389, 23);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (389, 389, 62, 3);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('390', 'B00080ZG10', 'The Aviator ', 14.98, 'http://images.amazon.com/images/P/B00080ZG10.01.MZZZZZZZ.jpg', '<p clear=left> <img src="http://images.amazon.com/images/G/01/video/stills/aviator-01_m.jpg" align= "left" border="0"> From Hollywood''s legendary Cocoanut Grove to the pioneering conquest of the wild blue yonder, Martin Scorsese''s The Aviator celebrates old-school filmmaking at its finest. We say "old school" only because Scorsese''s love of golden-age Hollywood is evident in his approach to his subject');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('390', 'B00080ZG10', 'The Aviator ', 14.98, 'http://images.amazon.com/images/P/B00080ZG10.01.MZZZZZZZ.jpg', 'From Hollywood''s legendary Cocoanut Grove to the pioneering conquest of the wild blue yonder, Martin Scorsese''s The Aviator celebrates old-school filmmaking at its finest. We say "old school" only because Scorsese''s love of golden-age Hollywood is evident in his approach to his subject');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (390, 55)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (390, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (390, 11);
@@ -3204,7 +3204,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (398, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (398, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (398, 398, 8, 9);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('399', 'B00008WJEQ', 'Empire Records ', 19.98, 'http://images.amazon.com/images/P/B00008WJEQ.01.MZZZZZZZ.jpg', 'This story about a day in the life of an independent record store, truly a threatened species, screeches with the sound of teenagers falling apart emotionally every five minutes. The script, which feels like an old guy''s idea of how kids talk and think, concerns the young employees of a Delaware music shop faced with imminent extinction. While the ship is sinking, the staff indulge in tantrums, depressions, and run-ins with low self-esteem. There''s a lot of noise in this thing, but not a lot is really said. Rory Cochrane has the best part as a secretive guy who loses the store''s proceeds one night while gambling, Anthony LaPaglia is the adult boss and unofficial dad to the others, Renée Zellweger plays a promiscuous girl, and Liv Tyler is OK as a lovestruck sweet thing try!
ing to get up the nerve to express her feelings to a fellow employee. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('399', 'B00008WJEQ', 'Empire Records ', 19.98, 'http://images.amazon.com/images/P/B00008WJEQ.01.MZZZZZZZ.jpg', 'This story about a day in the life of an independent record store, truly a threatened species, screeches with the sound of teenagers falling apart emotionally every five minutes. The script, which feels like an old guy''s idea of how kids talk and think, concerns the young employees of a Delaware music shop faced with imminent extinction. While the ship is sinking, the staff indulge in tantrums, depressions, and run-ins with low self-esteem. There''s a lot of noise in this thing, but not a lot is really said. Rory Cochrane has the best part as a secretive guy who loses the store''s proceeds one night while gambling, Anthony LaPaglia is the adult boss and unofficial dad to the others, Renee Zellweger plays a promiscuous girl, and Liv Tyler is OK as a lovestruck sweet thing trying to !
get up the nerve to express her feelings to a fellow employee. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (399, 57)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (399, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (399, 9);
@@ -3218,7 +3218,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (400, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (400, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (400, 400, 13, 0);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('401', '6305906947', 'Onegin', 14.98, 'http://images.amazon.com/images/P/6305906947.01.MZZZZZZZ.jpg', 'Given that for Russians, Pushkin''s poem Eugene Onegin is sort of like Hamlet, Beowulf, and Lord Byron''s Don Juan rolled into one melancholy tale of lost love and ennui among the gentry, it''s surprising Russian filmmakers have balked at adapting the film. Having taken a stage production of Hamlet to Russia where it was rapturously received, self-confessed Slavophile actor Ralph Fiennes must have thought he was making reparation when he executive-produced and starred in this faithful adaptation of the film. With Martha Fiennes on board as director, it''s something of a family affair with more than a little of the solemnity one often discovers in "personal projects". Pushkin''s romanticism comes across amply, but little of his ferocious wit or, inevitably, the authorial voice that makes the !
poem so compelling, even in translation. Ralph Fiennes typecasts himself in the title role: his Onegin is yet another of the actor''s wintry, haunted lovers in period dress (this time early 19th century). The character, a jaded roué from St. Petersburg, summers in the countryside where he inadvertently wins the heart of the impulsive Tatyana (Liv Tyler, the girl they book when Gwyneth Paltrow''s busy). Onegin''s casual attitude to her love leads to a tragic duel (magnificently tense and perfectly staged), and years later a chance meeting stirs up feelings of regret, triumph, and moral queasiness. Tears well in eyes, letters are sent and read, furs are ruffled in the snow. This is the highbrow end of costume drama: patrician in its literary purity, and rather admirable in its restraint and good taste, if a little dull. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('401', '6305906947', 'Onegin', 14.98, 'http://images.amazon.com/images/P/6305906947.01.MZZZZZZZ.jpg', 'Given that for Russians, Pushkin''s poem Eugene Onegin is sort of like Hamlet, Beowulf, and Lord Byron''s Don Juan rolled into one melancholy tale of lost love and ennui among the gentry, it''s surprising Russian filmmakers have balked at adapting the film. Having taken a stage production of Hamlet to Russia where it was rapturously received, self-confessed Slavophile actor Ralph Fiennes must have thought he was making reparation when he executive-produced and starred in this faithful adaptation of the film. With Martha Fiennes on board as director, it''s something of a family affair with more than a little of the solemnity one often discovers in "personal projects". Pushkin''s romanticism comes across amply, but little of his ferocious wit or, inevitably, the authorial voice that makes the !
poem so compelling, even in translation. Ralph Fiennes typecasts himself in the title role: his Onegin is yet another of the actor''s wintry, haunted lovers in period dress (this time early 19th century). The character, a jaded roue; from St. Petersburg, summers in the countryside where he inadvertently wins the heart of the impulsive Tatyana (Liv Tyler, the girl they book when Gwyneth Paltrow''s busy). Onegin''s casual attitude to her love leads to a tragic duel (magnificently tense and perfectly staged), and years later a chance meeting stirs up feelings of regret, triumph, and moral queasiness. Tears well in eyes, letters are sent and read, furs are ruffled in the snow. This is the highbrow end of costume drama: patrician in its literary purity, and rather admirable in its restraint and good taste, if a little dull. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (401, 57)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (401, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (401, 11);
@@ -3242,13 +3242,13 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (403, 25);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (403, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (403, 403, 48, 11);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('404', 'B00000JRWE', 'Cookie''s Fortune', 19.98, 'http://images.amazon.com/images/P/B00000JRWE.01.MZZZZZZZ.jpg', 'Dedicated fans of Robert Altman will want to check out this drowsy Southern comedy, which is shot through with the director''s feel for location and his musical sense of storytelling. Non-Altman fanatics might want to tread more carefully. Cookie''s Fortune begins beautifully, as handyman Willis (Charles S. Dutton) staggers home from a blues club in the small town of Holly Springs, Mississippi. In the wee hours of a warm night, he has an affectionate chat with elderly matriarch Jewel Mae "Cookie" Orcutt (the grand Patricia Neal) and the gentle history of their friendship is sketched in a few brief exchanges. Soon enough, Cookie has checked out of this world to join her dear departed husband, prompting her nieces to make the suicide look like a murder');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('404', 'B00000JRWE', 'Cookie''s Fortune', 19.98, 'http://images.amazon.com/images/P/B00000JRWE.01.MZZZZZZZ.jpg', 'Dedicated fans of Robert Altman will want to check out this drowsy Southern comedy, which is shot through with the director''s feel for location and his musical sense of storytelling. Non-Altman fanatics might want to tread more carefully. Cookie''s Fortune begins beautifully, as handyman Willis (Charles S. Dutton) staggers home from a blues club in the small town of Holly Springs, Mississippi. In the wee hours of a warm night, he has an affectionate chat with elderly matriarch Jewel Mae "Cookie" Orcutt (the grand Patricia Neal) and the gentle history of their friendship is sketched in a few brief exchanges. Soon enough, Cookie has checked out of this world to join her dear departed husband, prompting her nieces to make the suicide look like a murder');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (404, 57)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (404, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (404, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (404, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (404, 404, 72, 2);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('405', 'B00003CXTG', 'Pearl Harbor', 19.99, 'http://images.amazon.com/images/P/B00003CXTG.01.MZZZZZZZ.jpg', 'To call Pearl Harbor a throwback to old-time war movies is something of an understatement. Director Michael Bay''s epic take on the bombing that brought the United States into World War II hijacks every war movie situation and cliché (some affectionate, some stale) you''ve ever seen and gives them a shiny, glossy spin until the whole movie practically gleams. Planes glisten, water sparkles, trees beckon');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('405', 'B00003CXTG', 'Pearl Harbor', 19.99, 'http://images.amazon.com/images/P/B00003CXTG.01.MZZZZZZZ.jpg', 'To call Pearl Harbor a throwback to old-time war movies is something of an understatement. Director Michael Bay''s epic take on the bombing that brought the United States into World War II hijacks every war movie situation and cliche; (some affectionate, some stale) you''ve ever seen and gives them a shiny, glossy spin until the whole movie practically gleams. Planes glisten, water sparkles, trees beckon');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (405, 58)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (405, 15);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (405, 2);
@@ -3280,14 +3280,14 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (408, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (408, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (408, 408, 46, 22);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('409', 'B00005Q3TZ', 'Pearl Harbor ', 39.99, 'http://images.amazon.com/images/P/B00005Q3TZ.01.MZZZZZZZ.jpg', 'Sometimes bigger is actually better. Nearly matching the size of director Michael Bay''s ego, this massive four-disc set is a veritable Pearl Harbor archive, and ironically, Bay''s film remains the least interesting component. It''s a purely conventional Hollywood take on the tragedy, using a clichéd love triangle between two ace pilots (Josh Hartnett, Ben Affleck) and a Pearl Harbor nurse (Kate Beckinsale) as an "intimate" means of spectacularly re-creating the attack that thrust America into World War II. The director''s cut adds little to the previous DVD release, apart from authentic R-rated carnage during the Japanese raid, and minor expansion of the Hartnett-Beckinsale romance. Commentaries range from superfluous (Bay and film historian Jeanine Basinger) to highly entertain!
ing (Ben Affleck and costars) and technically informative (primary production team), and a spirited examination of visual effects (with Bay and ILM supervisor Eric Brevig) is guaranteed to fascinate anyone interested in physical effects and CGI. A broad "making of" documentary is noteworthy for one-time viewing, while abundant historical records make this a valuable compilation of definitive materials. The History Channel''s "One Hour over Tokyo" and "Unsung Heroes of Pearl Harbor" provide depth that Bay''s movie lacks, and Charles Kiselyak''s interactive timeline is arguably the finest feature included, providing an in-depth historical perspective on U.S.-Japan relations. Even a brief reenactment of a Pearl Harbor nurse''s journal is moving in a way that Bay''s film can only try to be, while the "Interactive Attack Sequence" provides a multifaceted exploration of the entire production process (a highly educational feature for aspiring filmmakers). All in all, these four !
discs offer an admirable balance between Bay''s technically impressive
but ill-conceived epic and a thorough, fitting tribute to those who endured hell on that fateful Sunday in 1941. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('409', 'B00005Q3TZ', 'Pearl Harbor ', 39.99, 'http://images.amazon.com/images/P/B00005Q3TZ.01.MZZZZZZZ.jpg', 'Sometimes bigger is actually better. Nearly matching the size of director Michael Bay''s ego, this massive four-disc set is a veritable Pearl Harbor archive, and ironically, Bay''s film remains the least interesting component. It''s a purely conventional Hollywood take on the tragedy, using a cliched love triangle between two ace pilots (Josh Hartnett, Ben Affleck) and a Pearl Harbor nurse (Kate Beckinsale) as an "intimate" means of spectacularly re-creating the attack that thrust America into World War II. The director''s cut adds little to the previous DVD release, apart from authentic R-rated carnage during the Japanese raid, and minor expansion of the Hartnett-Beckinsale romance. Commentaries range from superfluous (Bay and film historian Jeanine Basinger) to highly entertaining (!
Ben Affleck and costars) and technically informative (primary production team), and a spirited examination of visual effects (with Bay and ILM supervisor Eric Brevig) is guaranteed to fascinate anyone interested in physical effects and CGI. A broad "making of" documentary is noteworthy for one-time viewing, while abundant historical records make this a valuable compilation of definitive materials. The History Channel''s "One Hour over Tokyo" and "Unsung Heroes of Pearl Harbor" provide depth that Bay''s movie lacks, and Charles Kiselyak''s interactive timeline is arguably the finest feature included, providing an in-depth historical perspective on U.S.-Japan relations. Even a brief reenactment of a Pearl Harbor nurse''s journal is moving in a way that Bay''s film can only try to be, while the "Interactive Attack Sequence" provides a multifaceted exploration of the entire production process (a highly educational feature for aspiring filmmakers). All in all, these four discs!
offer an admirable balance between Bay''s technically impressive but
ill-conceived epic and a thorough, fitting tribute to those who endured hell on that fateful Sunday in 1941. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (409, 58)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (409, 15);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (409, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (409, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (409, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (409, 409, 84, 8);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('410', 'B000E33W0I', 'The Passenger', 24.96, 'http://images.amazon.com/images/P/B000E33W0I.01.MZZZZZZZ.jpg', 'The Passenger is one of those movies that is all about the vision of the director, in this case, screen legend Michelangelo Antonioni. Starring none other than Jack Nicholson, and featuring a plot billed as an international romantic thriller, The Passenger defies expectations by turning the genre on its head, making the characters and the story secondary to theme and tone. London-based Journalist David Locke (Nicholson) is working in North Africa when a fellow traveler by the name of David Robertson, who looks remarkably like him, happens to die suddenly. Burned out and depleted, Locke decides to assume the dead man’s identity, drops everything, and starts again as a new man with a new life. With no idea of who Robertson was or what he did for a living, Locke uses Robertson’!
s datebook as a guide as he travels through Europe and Africa, takes meetings with people he finds out are gun runners, and ends up falling for a beautiful young woman (Maria Schneider). As Robertson, David Locke thinks he has found an exhilirating new freedom, but the fact is he''s in over his head: there are people looking for him and his life could be in danger. The movie is a thriller in structure only. While designed for suspense, it’s just a premise for Antonioni to explore on themes of identity, humankind’s seemingly futile relationship to the world around us, and isolation. For Antonioni, the action is the means by which the image unfolds, and not the other way around. The actors and the plot are set pieces, simply smaller means to a larger end, and the image and atmosphere supersede all else. A slow pace, long, lingering shots, a focus on emptiness, and a detached, almost brutally objective point of view are the trademarks on full display here. Especi!
ally notable is the stunning seven-minute long shot in the final scene
, one of the most famous in cinema history, which Nicholson, in his commentary, tags as an "Antonioni joke." It caps a crowning achievement by one of the big screen’s most visionary directors. <b>On the DVD:</b><br> The commentaries are most definitely welcome guides, and those looking for a way into the movie and into Antonioni’s head will really enjoy them. Jack Nicholson provides one commentary track where he generously shares his memories of the shoot, his thoughts on the movie thirty years on, and lets out the secret of how they managed to get the camera through the bars on the window for that seven-minute shot in the last scene. On the second commentary track, journalist Aurora Irvine and screenwriter Mark Peploe offer more of a wide-angle lens view of the movie and its place in history. Both are insightful narratives—Nicholson’s is particularly enjoyable');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('410', 'B000E33W0I', 'The Passenger', 24.96, 'http://images.amazon.com/images/P/B000E33W0I.01.MZZZZZZZ.jpg', 'The Passenger is one of those movies that is all about the vision of the director, in this case, screen legend Michelangelo Antonioni. Starring none other than Jack Nicholson, and featuring a plot billed as an international romantic thriller, The Passenger defies expectations by turning the genre on its head, making the characters and the story secondary to theme and tone. London-based Journalist David Locke (Nicholson) is working in North Africa when a fellow traveler by the name of David Robertson, who looks remarkably like him, happens to die suddenly. Burned out and depleted, Locke decides to assume the dead man''s identity, drops everything, and starts again as a new man with a new life. With no idea of who Robertson was or what he did for a living, Locke uses Robertson''s datebo!
ok as a guide as he travels through Europe and Africa, takes meetings with people he finds out are gun runners, and ends up falling for a beautiful young woman (Maria Schneider). As Robertson, David Locke thinks he has found an exhilirating new freedom, but the fact is he''s in over his head: there are people looking for him and his life could be in danger. The movie is a thriller in structure only. While designed for suspense, it''s just a premise for Antonioni to explore on themes of identity, humankind''s seemingly futile relationship to the world around us, and isolation. For Antonioni, the action is the means by which the image unfolds, and not the other way around. The actors and the plot are set pieces, simply smaller means to a larger end, and the image and atmosphere supersede all else. A slow pace, long, lingering shots, a focus on emptiness, and a detached, almost brutally objective point of view are the trademarks on full display here. Especially notable is !
the stunning seven-minute long shot in the final scene, one of the mos
t famous in cinema history, which Nicholson, in his commentary, tags as an "Antonioni joke." It caps a crowning achievement by one of the big screen''s most visionary directors. On the DVD: The commentaries are most definitely welcome guides, and those looking for a way into the movie and into Antonioni''s head will really enjoy them. Jack Nicholson provides one commentary track where he generously shares his memories of the shoot, his thoughts on the movie thirty years on, and lets out the secret of how they managed to get the camera through the bars on the window for that seven-minute shot in the last scene. On the second commentary track, journalist Aurora Irvine and screenwriter Mark Peploe offer more of a wide-angle lens view of the movie and its place in history. Both are insightful narratives. Nicholson''s is particularly enjoyable');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (410, 59)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (410, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (410, 11);
@@ -3381,7 +3381,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (423, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (423, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (423, 423, 40, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('424', 'B00003CXAE', 'Grease ', 14.98, 'http://images.amazon.com/images/P/B00003CXAE.01.MZZZZZZZ.jpg', 'Riding the strange ''50s nostalgia wave that swept through America during the late 1970s (caused by TV shows like Happy Days and films like American Graffiti), Grease became not only the word in 1978, but also a box-office smash and a cultural phenomenon. Twenty years later, this entertaining film adaptation of the Broadway musical received another successful theatrical release, which included visual remastering and a shiny new Dolby soundtrack. In this 2002 DVD release, Grease lovers can also now see it in the correct 2:35 to 1 Panavision aspect ratio, and see retrospective interviews with cast members and director Randal Kleiser. All these stylistic touches are essential to the film''s success. Without the vibrant colors, unforgettably campy and catchy tunes (like "Greased Lightning," "Su!
mmer Nights," and "You''re the One That I Want"), and fabulously choreographed, widescreen musical numbers, the film would have to rely on a silly, cliché-filled plot that we''ve seen hundreds of times. As it is, the episodic story about the romantic dilemmas experienced by a group of graduating high school seniors remains fresh, fun, and incredibly imaginative. The young, animated cast also deserves a lot of credit, bringing chemistry and energy to otherwise bland material. John Travolta, straight from his success in Saturday Night Fever, knows his sexual star power and struts, swaggers, sings, and dances appropriately, while Olivia Newton-John''s portrayal of virgin innocence is the only decent acting she''s ever done. And then there''s Stockard Channing, spouting sexual double-entendres as Rizzo, the bitchy, raunchy leader of the Pink Ladies, who steals the film from both of its stars. Ignore the sequel at all costs. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('424', 'B00003CXAE', 'Grease ', 14.98, 'http://images.amazon.com/images/P/B00003CXAE.01.MZZZZZZZ.jpg', 'Riding the strange ''50s nostalgia wave that swept through America during the late 1970s (caused by TV shows like Happy Days and films like American Graffiti), Grease became not only the word in 1978, but also a box-office smash and a cultural phenomenon. Twenty years later, this entertaining film adaptation of the Broadway musical received another successful theatrical release, which included visual remastering and a shiny new Dolby soundtrack. In this 2002 DVD release, Grease lovers can also now see it in the correct 2:35 to 1 Panavision aspect ratio, and see retrospective interviews with cast members and director Randal Kleiser. All these stylistic touches are essential to the film''s success. Without the vibrant colors, unforgettably campy and catchy tunes (like "Greased Lightning," "Su!
mmer Nights," and "You''re the One That I Want"), and fabulously choreographed, widescreen musical numbers, the film would have to rely on a silly, cliche-filled plot that we''ve seen hundreds of times. As it is, the episodic story about the romantic dilemmas experienced by a group of graduating high school seniors remains fresh, fun, and incredibly imaginative. The young, animated cast also deserves a lot of credit, bringing chemistry and energy to otherwise bland material. John Travolta, straight from his success in Saturday Night Fever, knows his sexual star power and struts, swaggers, sings, and dances appropriately, while Olivia Newton-John''s portrayal of virgin innocence is the only decent acting she''s ever done. And then there''s Stockard Channing, spouting sexual double-entendres as Rizzo, the bitchy, raunchy leader of the Pink Ladies, who steals the film from both of its stars. Ignore the sequel at all costs. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (424, 61)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (424, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (424, 55);
@@ -3401,7 +3401,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (426, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (426, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (426, 426, 30, 20);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('427', 'B00005PJ8T', 'The Thin Red Line', 14.98, 'http://images.amazon.com/images/P/B00005PJ8T.01.MZZZZZZZ.jpg', 'One of the cinema''s great disappearing acts came to a close with the release of The Thin Red Line in late 1998. Terrence Malick, the cryptic recluse who withdrew from Hollywood visibility after the release of his visually enthralling masterpiece Days of Heaven (1978), returned to the director''s chair after a 20-year coffee break. Malick''s comeback vehicle is a fascinating choice: a wide-ranging adaptation of a World War II novel (filmed once before, in 1964) by James Jones. The battle for Guadalcanal Island gives Malick an opportunity to explore nothing less than the nature of life, death, God, and courage. Let that be a warning to anyone expecting a conventional war flick; Malick proves himself quite capable of mounting an exciting action sequence, but he''s just as lik!
ely to meander into pure philosophical noodling');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('427', 'B00005PJ8T', 'The Thin Red Line', 14.98, 'http://images.amazon.com/images/P/B00005PJ8T.01.MZZZZZZZ.jpg', 'One of the cinema''s great disappearing acts came to a close with the release of The Thin Red Line in late 1998. Terrence Malick, the cryptic recluse who withdrew from Hollywood visibility after the release of his visually enthralling masterpiece Days of Heaven (1978), returned to the director''s chair after a 20-year coffee break. Malick''s comeback vehicle is a fascinating choice: a wide-ranging adaptation of a World War II novel (filmed once before, in 1964) by James Jones. The battle for Guadalcanal Island gives Malick an opportunity to explore nothing less than the nature of life, death, God, and courage. Let that be a warning to anyone expecting a conventional war flick; Malick proves himself quite capable of mounting an exciting action sequence, but he''s just as likely t!
o meander into pure philosophical noodling');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (427, 61)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (427, 27);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (427, 15);
@@ -3409,7 +3409,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (427, 11);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (427, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (427, 427, 87, 23);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('428', 'B00003CXCH', 'Saturday Night Fever', 12.98, 'http://images.amazon.com/images/P/B00003CXCH.01.MZZZZZZZ.jpg', 'Saturday Night Fever is one of those movies that comes along and seems to change the cultural temperature in a flash. After the movie''s release in 1977, disco ruled the dance floors, and a blow-dried member of a TV-sitcom ensemble became the hottest star in the U.S. For all that, the story is conventional: a 19-year-old Italian American from Brooklyn, Tony Manero (John Travolta), works in a humble paint store and lives with his family. After dark, he becomes the polyester-clad stallion of the local nightclub; Tony''s brother, a priest, observes that when Tony hits the dance floor, the crowd parts like the Red Sea before Moses. Director John Badham captures the electric connection between music and dance, and also the desperation that lies beneath Tony''s ambitions to break out!
of his limited world. The soundtrack, which spawned a massively successful album, is dominated by the disco classics of the Bee Gees, including "Staying Alive" (Travolta''s theme during the strutting opening) and "Night Fever." The Oscar<sup>®</sup>-nominated Travolta, plucked from the cast of Welcome Back, Kotter, for his first starring role, is incandescent and unbelievably confident, and his dancing is terrific. Oh, and the white suit rules. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('428', 'B00003CXCH', 'Saturday Night Fever', 12.98, 'http://images.amazon.com/images/P/B00003CXCH.01.MZZZZZZZ.jpg', 'Saturday Night Fever is one of those movies that comes along and seems to change the cultural temperature in a flash. After the movie''s release in 1977, disco ruled the dance floors, and a blow-dried member of a TV-sitcom ensemble became the hottest star in the U.S. For all that, the story is conventional: a 19-year-old Italian American from Brooklyn, Tony Manero (John Travolta), works in a humble paint store and lives with his family. After dark, he becomes the polyester-clad stallion of the local nightclub; Tony''s brother, a priest, observes that when Tony hits the dance floor, the crowd parts like the Red Sea before Moses. Director John Badham captures the electric connection between music and dance, and also the desperation that lies beneath Tony''s ambitions to break out!
of his limited world. The soundtrack, which spawned a massively successful album, is dominated by the disco classics of the Bee Gees, including "Staying Alive" (Travolta''s theme during the strutting opening) and "Night Fever." The Oscar-nominated Travolta, plucked from the cast of Welcome Back, Kotter, for his first starring role, is incandescent and unbelievably confident, and his dancing is terrific. Oh, and the white suit rules. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (428, 61)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (428, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (428, 11);
@@ -3475,7 +3475,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (436, 4);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (436, 29);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (436, 436, 25, 24);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('437', 'B00004RF97', 'The Philadelphia Story', 19.97, 'http://images.amazon.com/images/P/B00004RF97.01.MZZZZZZZ.jpg', 'Recreating the role she originated in Philip Barry''s wickedly witty Broadway play, Katharine Hepburn stars as the spoiled and snobby socialite Tracy Lord in this sparkling 1940 screen adaptation of The Philadelphia Story, one of the great romantic comedies from the golden age of MGM studios. Applying her impossibly high ideals to everyone but herself, Tracy is about to marry a stuffy executive when her congenial ex-husband (Cary Grant), arrives to protect his former father-in-law from a potentially scandalous tabloid exposé. In an Oscar-winning role, James Stewart is the scandal reporter who falls for Tracy as her wedding day arrives, throwing her into a dizzying state of premarital jitters. Who will join Tracy at the altar? Snappy dialogue flows like sparkling wine u!
nder the sophisticated direction of George Cukor in this film that turned the tide of Hepburn''s career from "box-office poison" to glamorous Hollywood star. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('437', 'B00004RF97', 'The Philadelphia Story', 19.97, 'http://images.amazon.com/images/P/B00004RF97.01.MZZZZZZZ.jpg', 'Recreating the role she originated in Philip Barry''s wickedly witty Broadway play, Katharine Hepburn stars as the spoiled and snobby socialite Tracy Lord in this sparkling 1940 screen adaptation of The Philadelphia Story, one of the great romantic comedies from the golden age of MGM studios. Applying her impossibly high ideals to everyone but herself, Tracy is about to marry a stuffy executive when her congenial ex-husband (Cary Grant), arrives to protect his former father-in-law from a potentially scandalous tabloid expose. In an Oscar-winning role, James Stewart is the scandal reporter who falls for Tracy as her wedding day arrives, throwing her into a dizzying state of premarital jitters. Who will join Tracy at the altar? Snappy dialogue flows like sparkling wine under th!
e sophisticated direction of George Cukor in this film that turned the tide of Hepburn''s career from "box-office poison" to glamorous Hollywood star. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (437, 62)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (437, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (437, 8);
@@ -3483,7 +3483,7 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (437, 10);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (437, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (437, 437, 5, 13);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('438', 'B00005O06O', 'The Woody Allen Collection, Set 3', 79.96, 'http://images.amazon.com/images/P/B00005O06O.01.MZZZZZZZ.jpg', 'This Woody Allen boxed set captures the first half of what could be called Allen''s "Mia period," his films from the early 1980s. The lighthearted A Midsummer Night''s Sex Comedy, about the neurotic romping of a bunch of friends at a country house, marks the beginning of Woody and Mia Farrow''s film relationship, followed by Zelig, Allen''s clever pseudo-documentary of a man who just wants to fit in. Broadway Danny Rose, the tale of a mediocre talent agent who gets involved with a client''s wife, is seen as a trifle by some but held as one of Allen''s best films by others. But the next two are a pair of undisputed knockouts: The Purple Rose of Cairo, in which the hero of a movie (Jeff Daniels) steps off the screen to help a woeful waitress (Farrow). The ending is a!
t first heart-wrenching, then finds a wistful hope. Hannah and Her Sisters is possibly, after Annie Hall, Allen''s most loved movie, with its Chekhovian mix of love and sorrow in the lives of three sisters (Farrow, Dianne Wiest, and Barbara Hershey). Hannah won a number of awards, including Oscars<sup>®</sup> for best screenplay and supporting acting for both Wiest and Michael Caine (as Farrow''s husband). Finally, the nostalgic Radio Days rounds out the set with a gentle look at entertainment back when people had to dream up their own pictures. These six films represent one of Allen''s strongest periods; he moved fluidly from comedy to drama, avoiding big statements but ruefully exploring the foibles of humanity. ');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('438', 'B00005O06O', 'The Woody Allen Collection, Set 3', 79.96, 'http://images.amazon.com/images/P/B00005O06O.01.MZZZZZZZ.jpg', 'This Woody Allen boxed set captures the first half of what could be called Allen''s "Mia period," his films from the early 1980s. The lighthearted A Midsummer Night''s Sex Comedy, about the neurotic romping of a bunch of friends at a country house, marks the beginning of Woody and Mia Farrow''s film relationship, followed by Zelig, Allen''s clever pseudo-documentary of a man who just wants to fit in. Broadway Danny Rose, the tale of a mediocre talent agent who gets involved with a client''s wife, is seen as a trifle by some but held as one of Allen''s best films by others. But the next two are a pair of undisputed knockouts: The Purple Rose of Cairo, in which the hero of a movie (Jeff Daniels) steps off the screen to help a woeful waitress (Farrow). The ending is a!
t first heart-wrenching, then finds a wistful hope. Hannah and Her Sisters is possibly, after Annie Hall, Allen''s most loved movie, with its Chekhovian mix of love and sorrow in the lives of three sisters (Farrow, Dianne Wiest, and Barbara Hershey). Hannah won a number of awards, including Oscars for best screenplay and supporting acting for both Wiest and Michael Caine (as Farrow''s husband). Finally, the nostalgic Radio Days rounds out the set with a gentle look at entertainment back when people had to dream up their own pictures. These six films represent one of Allen''s strongest periods; he moved fluidly from comedy to drama, avoiding big statements but ruefully exploring the foibles of humanity. ');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (438, 63)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (438, 7);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (438, 10);
@@ -3633,13 +3633,13 @@
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (456, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (456, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (456, 456, 44, 1);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('457', 'B0000BYRO7', 'The James Bond Collection, Vol. 2 ', 124.96, 'http://images.amazon.com/images/P/B0000BYRO7.01.MZZZZZZZ.jpg', 'Sean Connery casts a long shadow over the James Bond legacy. He created the movie persona and starred in six of the first seven features, all but establishing the cool cold warrior as the world''s most suave secret agent. The second Bond collection celebrates the Connery Bond with three of his classics, including From Russia with Love, 007''s second and perhaps finest outing. A blond, buff Robert Shaw plays Bond''s most ruthless nemesis, and Lotte Lenya and the great Pedro Armindáriz costar in this sleek, high-energy trip through the Iron Curtain. Connery travels to the Far East in You Only Live Twice, which introduces the international criminal conspiracy SPECTRE and its cat-loving mastermind, Blofeld (Donald Pleasence). After a brief retirement, Connery re!
turned for Diamonds Are Forever, his final "official" appearance in the Bond series (15 years later he played Bond for a rival studio''s Never Say Never Again). This more tongue-in-cheek adventure takes 007 to Las Vegas, where he battles Blofeld (this time played by Charles Gray) and his minions');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('457', 'B0000BYRO7', 'The James Bond Collection, Vol. 2 ', 124.96, 'http://images.amazon.com/images/P/B0000BYRO7.01.MZZZZZZZ.jpg', 'Sean Connery casts a long shadow over the James Bond legacy. He created the movie persona and starred in six of the first seven features, all but establishing the cool cold warrior as the world''s most suave secret agent. The second Bond collection celebrates the Connery Bond with three of his classics, including From Russia with Love, 007''s second and perhaps finest outing. A blond, buff Robert Shaw plays Bond''s most ruthless nemesis, and Lotte Lenya and the great Pedro Armindriz costar in this sleek, high-energy trip through the Iron Curtain. Connery travels to the Far East in You Only Live Twice, which introduces the international criminal conspiracy SPECTRE and its cat-loving mastermind, Blofeld (Donald Pleasence). After a brief retirement, Connery returned!
for Diamonds Are Forever, his final "official" appearance in the Bond series (15 years later he played Bond for a rival studio''s Never Say Never Again). This more tongue-in-cheek adventure takes 007 to Las Vegas, where he battles Blofeld (this time played by Charles Gray) and his minions');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (457, 65)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (457, 15);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (457, 21);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (457, 4);
insert into INVENTORY (INV_ID, PROD_ID, QUAN_IN_STOCK, SALES) values (457, 457, 75, 0);
-insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('458', 'B00005ASOC', 'Finding Forrester', 14.94, 'http://images.amazon.com/images/P/B00005ASOC.01.MZZZZZZZ.jpg', 'Finding Forrester could have been a shallow variant of The Karate Kid, congratulating itself for featuring a 16-year-old black kid from the South Bronx who''s a brilliant scholar-athlete. Instead, director Gus Van Sant plays it matter-of-fact and totally real, casting a nonactor (Rob Brown) as Jamal, a basketball player and gifted student whose writing talent is nurtured by a famously reclusive author. William Forrester (Sean Connery) became a literary icon four decades earlier with a Pulitzer-winning novel, then disappeared (like J.D. Salinger) into his dark, book-filled apartment, agoraphobic and withdrawn from publishing, but as passionate as ever about writing. On a dare, Jamal sneaks into Forrester''s musty sanctuary, and what might have been a condescending cliché');
+insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('458', 'B00005ASOC', 'Finding Forrester', 14.94, 'http://images.amazon.com/images/P/B00005ASOC.01.MZZZZZZZ.jpg', 'Finding Forrester could have been a shallow variant of The Karate Kid, congratulating itself for featuring a 16-year-old black kid from the South Bronx who''s a brilliant scholar-athlete. Instead, director Gus Van Sant plays it matter-of-fact and totally real, casting a nonactor (Rob Brown) as Jamal, a basketball player and gifted student whose writing talent is nurtured by a famously reclusive author. William Forrester (Sean Connery) became a literary icon four decades earlier with a Pulitzer-winning novel, then disappeared (like J.D. Salinger) into his dark, book-filled apartment, agoraphobic and withdrawn from publishing, but as passionate as ever about writing. On a dare, Jamal sneaks into Forrester''s musty sanctuary, and what might have been a condescending cliche');
insert into PRODUCT_ACTORS (PROD_ID,ACTOR_ID) values (458, 65)
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (458, 2);
insert into PRODUCT_CATEGORY (PROD_ID, CATEGORY) values (458, 11);
15 years, 7 months
Seam SVN: r10058 - trunk/src/main/org/jboss/seam.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-19 11:18:48 -0500 (Thu, 19 Feb 2009)
New Revision: 10058
Modified:
trunk/src/main/org/jboss/seam/pages-2.1.xsd
Log:
JBSEAM-3960
Modified: trunk/src/main/org/jboss/seam/pages-2.1.xsd
===================================================================
--- trunk/src/main/org/jboss/seam/pages-2.1.xsd 2009-02-19 15:52:36 UTC (rev 10057)
+++ trunk/src/main/org/jboss/seam/pages-2.1.xsd 2009-02-19 16:18:48 UTC (rev 10058)
@@ -59,7 +59,7 @@
<xs:attribute name="log-level" type="pages:loglevel-values"/>
<!-- The logLevel attribute is deprecated and will be removed in the next major version! Please use log-level instead -->
- <xs:attribute name="logLevel" type="pages:logLevel-values"/>
+ <xs:attribute name="logLevel" type="pages:loglevel-values"/>
</xs:attributeGroup>
<xs:element name="conversation">
15 years, 7 months
Seam SVN: r10057 - branches/community/Seam_2_0/src/main/org/jboss/seam/web.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-19 10:52:36 -0500 (Thu, 19 Feb 2009)
New Revision: 10057
Modified:
branches/community/Seam_2_0/src/main/org/jboss/seam/web/ExceptionFilter.java
Log:
JBSEAM-3680
Modified: branches/community/Seam_2_0/src/main/org/jboss/seam/web/ExceptionFilter.java
===================================================================
--- branches/community/Seam_2_0/src/main/org/jboss/seam/web/ExceptionFilter.java 2009-02-19 10:44:41 UTC (rev 10056)
+++ branches/community/Seam_2_0/src/main/org/jboss/seam/web/ExceptionFilter.java 2009-02-19 15:52:36 UTC (rev 10057)
@@ -27,6 +27,7 @@
import org.jboss.seam.annotations.web.Filter;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.FacesLifecycle;
+import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.core.ConversationPropagation;
import org.jboss.seam.core.Manager;
import org.jboss.seam.exception.Exceptions;
@@ -92,6 +93,9 @@
(Manager) request.getAttribute( Seam.getComponentName(Manager.class) );
String conversationId = manager==null ? null : manager.getCurrentConversationId();
+ // Ensure that the call in which the exception occurred was cleaned up - it might not be, and there is no harm in trying
+ Lifecycle.endRequest();
+
//Initialize the temporary context objects
FacesLifecycle.beginExceptionRecovery( facesContext.getExternalContext() );
15 years, 7 months
Seam SVN: r10056 - branches/enterprise/JBPAPP_4_3_FP01/build.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-19 05:44:41 -0500 (Thu, 19 Feb 2009)
New Revision: 10056
Modified:
branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml
Log:
reverting jboss-embedded beta3.SP4
Modified: branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml 2009-02-18 16:07:30 UTC (rev 10055)
+++ branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml 2009-02-19 10:44:41 UTC (rev 10056)
@@ -683,7 +683,7 @@
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-api</artifactId>
- <version>beta3.SP5</version>
+ <version>beta3.SP4</version>
</dependency>
<dependency>
15 years, 7 months
Seam SVN: r10055 - in branches/enterprise/JBPAPP_4_3_FP01: examples/drools/view and 235 other directories.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-18 11:07:30 -0500 (Wed, 18 Feb 2009)
New Revision: 10055
Added:
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/NewEntryTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SearchTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SeleniumBlogTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/blog.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/booking.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/CommentTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactCRUDTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactlistConstants.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/Person.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/SeleniumContactlistTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/selenium/drools.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/LoginTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/Person.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/RegistrationTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SearchTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SeleniumDvdTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/ShoppingCartTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/dvd.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/selenium/SeleniumItextTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/jpa.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/selenium/MessageTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/NestedSimpleBookingTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/NumberGuessTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/numberguess.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/QuartzPaymentTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/quartz.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/selenium/RegistrationTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/selenium/SeleniumChatroomTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/BidTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/RegistrationTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SearchTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SeleniumSeamBayTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SellTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/seambay.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/seampay.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/LoginTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/SeleniumSeamSpaceTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/UserTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/SpringChangePasswordTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/spring.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/selenium/SeleniumTodoTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/build.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/jboss.xml
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/selenium/SeleniumUITest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/ftest.properties
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-java-client-driver.jar
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-server-standalone.jar
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/testng-5.8-jdk15.jar
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/AjaxTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/BackButtonTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ChangePasswordTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ConversationTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/RegistrationTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SeleniumBookingTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SimpleBookingTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/selenium/CommonNumberGuessTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/PaymentTest.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSelenium.java
branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
Modified:
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/404.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/entry.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/index.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/login.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/menu.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/nav.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/search.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/drools/view/numberGuess.jsp
branches/enterprise/JBPAPP_4_3_FP01/examples/messages/view/messages.jsp
branches/enterprise/JBPAPP_4_3_FP01/examples/nestedbooking/view/main.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/numberguess/view/numberGuess.jspx
branches/enterprise/JBPAPP_4_3_FP01/examples/registration/view/register.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/auction.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bid.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bidhistory.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/header.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/home.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/login.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/preview.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/register.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.js
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell3.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell4.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell5.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/createBlog.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/home.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/profile.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/template.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/userdetail.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/usermanager.xhtml
branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/login.jsp
branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/todo.jsp
Log:
JBPAPP-1700
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/404.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/404.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/404.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -7,7 +7,7 @@
template="#{theme.template}">
<ui:define name="content">
- <h3>Page not found</h3>
+ <h3 id="404">Page not found</h3>
</ui:define>
</ui:composition>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/entry.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/entry.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/entry.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -10,8 +10,8 @@
<ui:define name="content">
<s:cache key="entry-#{blogEntry.id}" region="pageFragments">
<div class="blogEntry">
- <h3>#{blogEntry.title}</h3>
- <div>
+ <h3 id="title">#{blogEntry.title}</h3>
+ <div id="body">
<s:formattedText value="#{blogEntry.body}"/>
</div>
<p>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/index.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/index.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/index.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -9,15 +9,15 @@
<ui:define name="content">
<s:cache key="index" region="pageFragments">
- <h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3">
+ <h:dataTable id="entryTable" value="#{blog.recentBlogEntries}" var="blogEntry" rows="3">
<h:column>
<div class="blogEntry">
- <h3>#{blogEntry.title}</h3>
+ <h3><h:outputText id="title" value="#{blogEntry.title}" /></h3>
<div>
- <s:formattedText value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/>
+ <s:formattedText id="excerpt" value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/>
</div>
<p>
- <h:outputLink value="entry.xhtml" rendered="#{blogEntry.excerpt!=null}">
+ <h:outputLink id="link" value="entry.xhtml" rendered="#{blogEntry.excerpt!=null}">
<f:param name="blogEntryId" value="#{blogEntry.id}"/>
Read more...
</h:outputLink>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/login.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/login.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/login.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -8,7 +8,7 @@
<ui:define name="content">
<div class="blogEntry">
- <h:form>
+ <h:form id="login">
<div>
<h:outputLabel for="password">Password:</h:outputLabel>
</div>
@@ -17,7 +17,7 @@
value="#{identity.password}"
size="15"
maxlength="15"/>
- <h:commandButton value="Login"/>
+ <h:commandButton id="login" value="Login"/>
<span class="errors"><h:message for="password"/></span>
<span class="errors"><h:messages globalOnly="true"/></span>
</div>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/menu.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/menu.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/menu.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -1,11 +1,11 @@
-<h:form xmlns="http://www.w3.org/1999/xhtml"
+<h:form id="searchForm" xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<span class="menuItem">
- <h:inputText value="#{searchService.searchPattern}"/>
- <h:commandButton value="Search" action="/search.xhtml"/>
+ <h:inputText id="field" value="#{searchService.searchPattern}"/>
+ <h:commandButton id="submit" value="Search" action="/search.xhtml"/>
</span>
<span class="menuItem">
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/nav.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/nav.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/nav.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -3,15 +3,15 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
- <h:outputLink value="search.xhtml">
+ <h:outputLink id="allPosts" value="search.xhtml">
[All posts]
<f:param name="searchPattern" value=""/>
</h:outputLink>
- <h:outputLink value="index.xhtml">[Recent posts]</h:outputLink>
+ <h:outputLink id="recentPosts" value="index.xhtml">[Recent posts]</h:outputLink>
- <h:outputLink value="post.xhtml">[Write new post]</h:outputLink>
+ <h:outputLink id="newPost" value="post.xhtml">[Write new post]</h:outputLink>
- <h:outputLink value="index.xml">[Atom feed]</h:outputLink>
+ <h:outputLink id="atomFeed" value="index.xml">[Atom feed]</h:outputLink>
</span>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/search.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/search.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/blog/view/search.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -7,10 +7,10 @@
template="#{theme.template}">
<ui:define name="content">
- <h:dataTable value="#{searchResults}" var="blogEntry">
+ <h:dataTable id="searchResultTable" value="#{searchResults}" var="blogEntry">
<h:column>
<div>
- <h:outputLink value="entry.xhtml">
+ <h:outputLink id="link" value="entry.xhtml">
<f:param name="blogEntryId" value="#{blogEntry.id}"/>
#{blogEntry.title}
</h:outputLink>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/drools/view/numberGuess.jsp
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/drools/view/numberGuess.jsp 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/drools/view/numberGuess.jsp 2009-02-18 16:07:30 UTC (rev 10055)
@@ -7,20 +7,20 @@
<body>
<h1>Guess a number...</h1>
<f:view>
- <h:form>
+ <h:form id="NumberGuessMain">
<h:outputText value="Higher!" rendered="#{randomNumber>guess.value}" />
<h:outputText value="Lower!" rendered="#{randomNumber<guess.value}" />
<br />
- I'm thinking of a number between <h:outputText value="#{game.smallest}" /> and
- <h:outputText value="#{game.biggest}" />.
+ I'm thinking of a number between <h:outputText id="Smallest" value="#{game.smallest}" /> and
+ <h:outputText id="Biggest" value="#{game.biggest}" />.
<br />
Your guess:
- <h:inputText value="#{guess.value}" id="guess" required="true">
+ <h:inputText value="#{guess.value}" id="inputGuess" required="true">
<f:validateLongRange
maximum="#{game.biggest}"
minimum="#{game.smallest}"/>
</h:inputText>
- <h:commandButton type="submit" value="Guess" action="guess" />
+ <h:commandButton id="GuessButton" type="submit" value="Guess" action="guess" />
<br/>
<h:message for="guess" style="color: red"/>
</h:form>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/messages/view/messages.jsp
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/messages/view/messages.jsp 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/messages/view/messages.jsp 2009-02-18 16:07:30 UTC (rev 10055)
@@ -8,34 +8,34 @@
<body>
<f:view>
<h2>Message List</h2>
- <h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/>
- <h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount>0}">
+ <h:outputText id="noMessages" value="No messages to display" rendered="#{messageList.rowCount==0}"/>
+ <h:dataTable id="messages" var="msg" value="#{messageList}" rendered="#{messageList.rowCount>0}">
<h:column>
<f:facet name="header">
<h:outputText value="Read"/>
</f:facet>
- <h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/>
+ <h:selectBooleanCheckbox id="read" value="#{msg.read}" disabled="true"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Title"/>
</f:facet>
- <s:link value="#{msg.title}" action="#{messageManager.select}"/>
+ <s:link id="link" value="#{msg.title}" action="#{messageManager.select}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Date/Time"/>
</f:facet>
- <h:outputText value="#{msg.datetime}">
+ <h:outputText id="date" value="#{msg.datetime}">
<s:convertDateTime type="both" dateStyle="medium" timeStyle="short"/>
</h:outputText>
</h:column>
<h:column>
- <s:button value="Delete" action="#{messageManager.delete}"/>
+ <s:button id="delete" value="Delete" action="#{messageManager.delete}"/>
</h:column>
</h:dataTable>
- <h3><h:outputText value="#{message.title}"/></h3>
- <div><h:outputText value="#{message.text}"/></div>
+ <h3><h:outputText id="title" value="#{message.title}"/></h3>
+ <div><h:outputText id="text" value="#{message.text}"/></div>
</f:view>
</body>
</html>
\ No newline at end of file
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/nestedbooking/view/main.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/nestedbooking/view/main.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/nestedbooking/view/main.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -43,7 +43,7 @@
<a:outputPanel id="searchResults">
<div class="section">
- <h:outputText id="NoBookingsFoundMessage" value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
+ <h:outputText id="NoHotelsFoundMessage" value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
<h:dataTable id="hotels" value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
<h:column id="column1">
<f:facet id="NameFacet" name="header">Name</f:facet>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/numberguess/view/numberGuess.jspx
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/numberguess/view/numberGuess.jspx 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/numberguess/view/numberGuess.jspx 2009-02-18 16:07:30 UTC (rev 10055)
@@ -18,44 +18,45 @@
<body>
<h1>Guess a number...</h1>
<f:view>
- <h:form styleClass="niceform">
+ <h:form id="NumberGuessMain" styleClass="niceform">
<div>
- <h:messages globalOnly="true"/>
- <h:outputText value="Higher!"
+ <h:messages id="messages" globalOnly="true"/>
+ <h:outputText id="Higher"
+ value="Higher!"
rendered="#{numberGuess.randomNumber gt numberGuess.currentGuess}"/>
- <h:outputText value="Lower!"
+ <h:outputText id="Lower" value="Lower!"
rendered="#{numberGuess.randomNumber lt numberGuess.currentGuess}"/>
</div>
<div>
- I'm thinking of a number between <h:outputText value="#{numberGuess.smallest}"/> and
- <h:outputText value="#{numberGuess.biggest}"/>. You have
- <h:outputText value="#{numberGuess.remainingGuesses}"/> guesses.
+ I'm thinking of a number between <h:outputText id="Smallest" value="#{numberGuess.smallest}"/> and
+ <h:outputText id="Biggest" value="#{numberGuess.biggest}"/>. You have
+ <h:outputText id="RemainingGuesses" value="#{numberGuess.remainingGuesses}"/> guesses.
</div>
<div>
Your guess:
- <h:inputText value="#{numberGuess.currentGuess}" id="inputGuess" required="true" size="3"
+ <h:inputText id="inputGuess" value="#{numberGuess.currentGuess}" required="true" size="3"
rendered="#{(numberGuess.biggest-numberGuess.smallest) gt 20}">
<f:validateLongRange maximum="#{numberGuess.biggest}"
minimum="#{numberGuess.smallest}"/>
</h:inputText>
- <h:selectOneMenu value="#{numberGuess.currentGuess}" id="selectGuessMenu" required="true"
+ <h:selectOneMenu id="selectGuessMenu" value="#{numberGuess.currentGuess}" required="true"
rendered="#{(numberGuess.biggest-numberGuess.smallest) le 20 and (numberGuess.biggest-numberGuess.smallest) gt 4}">
- <s:selectItems value="#{numberGuess.possibilities}" var="i" label="#{i}"/>
+ <s:selectItems id="PossibilitiesMenuItems" value="#{numberGuess.possibilities}" var="i" label="#{i}"/>
</h:selectOneMenu>
- <h:selectOneRadio value="#{numberGuess.currentGuess}" id="selectGuessRadio" required="true"
+ <h:selectOneRadio id="selectGuessRadio" value="#{numberGuess.currentGuess}" required="true"
rendered="#{(numberGuess.biggest-numberGuess.smallest) le 4}">
- <s:selectItems value="#{numberGuess.possibilities}" var="i" label="#{i}"/>
+ <s:selectItems id="PossibilitiesRadioItems" value="#{numberGuess.possibilities}" var="i" label="#{i}"/>
</h:selectOneRadio>
- <h:commandButton value="Guess" action="guess"/>
- <s:button value="Cheat" action="cheat"/>
- <s:button value="Give up" action="giveup"/>
+ <h:commandButton id="GuessButton" value="Guess" action="guess"/>
+ <s:button id="CheatButton" value="Cheat" action="cheat"/>
+ <s:button id="GiveUpButton" value="Give up" action="giveup"/>
</div>
<div>
- <h:message for="inputGuess" style="color: red"/>
+ <h:message id="message" for="inputGuess" style="color: red"/>
</div>
</h:form>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/registration/view/register.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/registration/view/register.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/registration/view/register.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -11,16 +11,16 @@
</head>
<body>
<f:view>
- <h:form>
+ <h:form id="registration">
<s:validateAll>
<h:panelGrid columns="2">
- Username: <h:inputText value="#{user.username}" required="true"/>
- Real Name: <h:inputText value="#{user.name}" required="true"/>
- Password: <h:inputSecret value="#{user.password}" required="true"/>
+ Username: <h:inputText id="username" value="#{user.username}" required="true"/>
+ Real Name: <h:inputText id="name" value="#{user.name}" required="true"/>
+ Password: <h:inputSecret id="password" value="#{user.password}" required="true"/>
</h:panelGrid>
</s:validateAll>
- <h:messages/>
- <h:commandButton value="Register" action="#{register.register}"/>
+ <h:messages id="messages"/>
+ <h:commandButton id="register" value="Register" action="#{register.register}"/>
</h:form>
</f:view>
</body>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/auction.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/auction.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/auction.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -88,7 +88,7 @@
<div class="itemDetails">
<div class="itemDetailRow">
- <h:form>
+ <h:form id="bid">
<label>
<s:fragment rendered="#{auction.highBid ne null}">
Current bid:
@@ -133,7 +133,7 @@
<label>History:</label>
<div>
- <h:outputLink value="#{facesContext.externalContext.requestContextPath}/bidhistory/#{auction.auctionId}">
+ <h:outputLink id="bidHistory" value="#{facesContext.externalContext.requestContextPath}/bidhistory/#{auction.auctionId}">
#{auction.bids} bids
</h:outputLink>
@@ -143,7 +143,7 @@
<div class="itemDetailRow">
<label>High bidder:</label>
<div>
- <span>#{auction.highBid.account.name}</span>
+ <span id="highBidder">#{auction.highBid.account.name}</span>
<h:outputText value="No bids" rendered="#{auction.highBid eq null}"/>
</div>
</div>
@@ -225,7 +225,7 @@
<b>Place a bid</b>
<hr class="blueLine"/>
- <h:form>
+ <h:form id="newBid">
<div class="bidRow">
<s:fragment rendered="#{auction.highBid ne null}">
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bid.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bid.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bid.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -56,7 +56,7 @@
</div>
</s:div>
- <s:div rendered="#{bidAction.outcome == 'outbid'}" styleClass="subSection">
+ <s:div id="outbid" rendered="#{bidAction.outcome == 'outbid'}" styleClass="subSection">
<div class="outbidImage"/>
<div class="alertContent">
<b>Your bid has been submitted</b>
@@ -132,7 +132,7 @@
</div>
</s:div>
- <h:form rendered="#{bidAction.outcome == 'invalid' or bidAction.outcome == 'required'}">
+ <h:form id="newBid" rendered="#{bidAction.outcome == 'invalid' or bidAction.outcome == 'required'}">
<div class="maximumBidRow">
<label>Your maximum bid:</label>
<div>
@@ -144,13 +144,13 @@
</div>
<div class="placeBid">
- <h:commandButton action="#{bidAction.updateBid}" value="Continue >"/>
+ <h:commandButton id="placeBidWithAmount" action="#{bidAction.updateBid}" value="Continue >"/>
</div>
</h:form>
</div>
- <h:form rendered="#{bidAction.outcome == 'outbid'}">
+ <h:form id="increaseBid" rendered="#{bidAction.outcome == 'outbid'}">
<div class="increaseBid" >
<label>Increase your maximum bid:</label>
<div>
@@ -160,14 +160,14 @@
</h:outputText> <b>or more</b>)</span>
</div>
</div>
- <h:commandButton styleClass="bidAgain" action="#{bidAction.updateBid}" value="Bid Again >"/>
+ <h:commandButton id="bidAgain" styleClass="bidAgain" action="#{bidAction.updateBid}" value="Bid Again >"/>
</h:form>
- <h:form rendered="#{bidAction.outcome == 'confirm'}">
+ <h:form id="confirm" rendered="#{bidAction.outcome == 'confirm'}">
<div class="confirmBid">
<b>By clicking on the button below, you agree to buy this item if you're the
winning bidder.</b><br/>
- <h:commandButton styleClass="placeBid" action="#{bidAction.confirmBid}" value="Confirm Bid"/>
+ <h:commandButton id="confirmBid" styleClass="placeBid" action="#{bidAction.confirmBid}" value="Confirm Bid"/>
</div>
</h:form>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bidhistory.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bidhistory.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/bidhistory.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -22,7 +22,7 @@
<h:outputLink value="#{facesContext.externalContext.requestContextPath}/itemdetail/#{auction.auctionId}">
<img src="#{facesContext.externalContext.requestContextPath}/img/arrow_left.png" border="0"/>
</h:outputLink>
- <h:outputLink value="#{facesContext.externalContext.requestContextPath}/itemdetail/#{auction.auctionId}">
+ <h:outputLink id="back" value="#{facesContext.externalContext.requestContextPath}/itemdetail/#{auction.auctionId}">
Back to auction details
</h:outputLink>
</div>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/header.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/header.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/header.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -15,18 +15,18 @@
</div>
<div class="header_search">
- <h:form>
+ <h:form id="search">
<h:inputText id="searchTerm" value="#{auctionSearch.searchTerm}"/>
- <h:commandButton action="#{auctionSearch.queryAllAuctions}" value="Search"/>
+ <h:commandButton id="submit" action="#{auctionSearch.queryAllAuctions}" value="Search"/>
</h:form>
</div>
</div>
<div class="header_tools_bottom">
<div>
- <s:link view="/buy.xhtml" value="Buy" styleClass="header_action" propagation="none"
- /><s:link view="/sell.xhtml" value="Sell" styleClass="header_action" propagation="none"
- /><s:link view="/help.xhtml" value="Help" styleClass="header_action" propagation="none"/>
+ <s:link id="buy" view="/buy.xhtml" value="Buy" styleClass="header_action" propagation="none"
+ /><s:link id="sell" view="/sell.xhtml" value="Sell" styleClass="header_action" propagation="none"
+ /><s:link id="help" view="/help.xhtml" value="Help" styleClass="header_action" propagation="none"/>
</div>
</div>
@@ -34,14 +34,14 @@
<s:fragment rendered="#{not identity.loggedIn}">
<span>Hello! </span>
- <s:link view="/login.seam" value="Sign in" propagation="none"/>
+ <s:link id="login" view="/login.seam" value="Sign in" propagation="none"/>
<span> or </span>
- <s:link view="/register.seam" value="register" propagation="none"/>.
+ <s:link id="register" view="/register.seam" value="register" propagation="none"/>.
</s:fragment>
<s:fragment rendered="#{identity.loggedIn}">
Hello, #{authenticatedAccount.name}.
- <span>(</span><s:link action="#{identity.logout}" propagation="none" value="Sign out"/><span>)</span>
+ <span>(</span><s:link id="logout" action="#{identity.logout}" propagation="none" value="Sign out"/><span>)</span>
</s:fragment>
</ui:composition>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/home.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/home.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/home.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -23,8 +23,8 @@
Categories
</div>
- <ui:repeat value="#{categories}" var="cat">
- <s:link view="/search.xhtml" action="#{auctionSearch.queryAuctions}" value="#{cat.name}" propagation="none">
+ <ui:repeat id="categories" value="#{categories}" var="cat">
+ <s:link id="link" view="/search.xhtml" action="#{auctionSearch.queryAuctions}" value="#{cat.name}" propagation="none">
<f:param name="categoryId" value="#{cat.categoryId}"/>
</s:link>
</ui:repeat>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/login.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/login.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/login.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -67,7 +67,7 @@
<b>*tip*</b> you can log in using <i>demo/demo</i>.
</p>
- <h:form>
+ <h:form id="login">
<p>
<b>seamBay User ID</b><br/>
<h:inputText id="username" value="#{identity.username}"/>
@@ -78,7 +78,7 @@
<h:inputSecret id="password" value="#{identity.password}"/>
</p>
- <h:commandButton action="#{identity.login}" value="Sign In > "/>
+ <h:commandButton id="submit" action="#{identity.login}" value="Sign In > "/>
<p>
<h:selectBooleanCheckbox id="rememberMe" value="#{identity.rememberMe}"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/preview.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/preview.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/preview.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -75,7 +75,7 @@
Starting price:
</label>
<div>
- $<b><h:outputText value="#{auctionAction.auction.currentPrice}">
+ $<b><h:outputText id="price" value="#{auctionAction.auction.currentPrice}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
</h:outputText></b>
</div>
@@ -87,7 +87,7 @@
<label>End time:</label>
<div>
<b>
- <h:outputText value="#{auctionAction.auction.endDate}">
+ <h:outputText id="endDate" value="#{auctionAction.auction.endDate}">
<f:convertDateTime pattern="dd-MMM-yyyy H:mm:ss"/>
</h:outputText>
</b>
@@ -168,7 +168,7 @@
Description
</div>
- <div class="descriptionContent">
+ <div id="description" class="descriptionContent">
<s:formattedText value="#{auctionAction.auction.description}" />
<hr/>
@@ -182,7 +182,7 @@
</div>
</div>
- <h:form>
+ <h:form id="sellForm">
<div class="navBar">
<div class="navBarLeft">
@@ -190,7 +190,7 @@
</div>
<div class="navBarRight">
- <h:commandButton action="#{auctionAction.confirm}" value="Confirm Listing"/>
+ <h:commandButton id="confirm" action="#{auctionAction.confirm}" value="Confirm Listing"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/register.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/register.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/register.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -42,32 +42,32 @@
Fill in the following details to register.
</div>
- <h:form>
+ <h:form id="registration">
<p>
<b>seamBay User ID</b><br/>
<h:inputText id="username" value="#{newuser.username}"/>
- <div class="validationError"><h:message for="username"/></div>
+ <div class="validationError"><h:message id="usernameMessage" for="username"/></div>
</p>
<p>
<b>Password</b><br/>
<h:inputSecret id="password" value="#{newuser.password}"/>
- <div class="validationError"><h:message for="password"/></div>
+ <div class="validationError"><h:message id="passwordMessage" for="password"/></div>
</p>
<p>
<b>Confirm Password</b><br/>
<h:inputSecret id="confirm" value="#{registerAction.confirm}"/>
- <div class="validationError"><h:message for="confirm"/></div>
+ <div class="validationError"><h:message id="confirmMessage" for="confirm"/></div>
</p>
<p>
<b>Location</b><br/>
<h:inputText id="location" class="location" value="#{newuser.account.location}"/>
- <div class="validationError"><h:message for="location"/></div>
+ <div class="validationError"><h:message id="locationMessage" for="location"/></div>
</p>
- <h:commandButton value="Register >" action="#{registerAction.register}"/>
+ <h:commandButton id="submit" value="Register >" action="#{registerAction.register}"/>
</h:form>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -28,7 +28,7 @@
Enter the details below then click next
</div>
- <h:form>
+ <h:form id="sellForm">
<s:validateAll>
<div class="formRow">
@@ -40,7 +40,7 @@
<div class="navBar">
<div class="navBarRight">
- <h:commandButton action="next" value="Next >"/>
+ <h:commandButton id="next" action="next" value="Next >"/>
</div>
<br class="clear"/>
</div>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.js
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.js 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.js 2009-02-18 16:07:30 UTC (rev 10055)
@@ -26,7 +26,7 @@
}
}
- var catId = document.getElementById("catSelection:categoryId").value;
+ var catId = document.getElementById("sellForm:categoryId").value;
// If the category ID is valid, select it
if ((typeof(catId) == "number" || !isNaN(parseInt(catId))))
@@ -139,7 +139,7 @@
{
var opt = getSelectedOption(ctl);
- var ctl = document.getElementById("catSelection:categoryId");
+ var ctl = document.getElementById("sellForm:categoryId");
var previous = findCategory(ctl.value);
ctl.value = opt.value;
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell2.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -28,7 +28,7 @@
Select the category that most closely matches the item you're selling
</div>
- <h:form id="catSelection">
+ <h:form id="sellForm">
<div id="container" class="category">
<div>
@@ -46,7 +46,7 @@
</div>
<div class="navBarRight">
- <h:commandButton value="Next >" action="next"/>
+ <h:commandButton id="next" value="Next >" action="next"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell3.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell3.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell3.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -28,7 +28,7 @@
Set the running time for your auction, and the starting price
</div>
- <h:form>
+ <h:form id="sellForm">
<s:validateAll>
<div class="formRow">
@@ -53,7 +53,7 @@
</div>
<div class="navBarRight">
- <h:commandButton value="Next >" action="next"/>
+ <h:commandButton id="next" value="Next >" action="next"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell4.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell4.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell4.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -59,7 +59,7 @@
<hr class="thinLine"/>
</ui:repeat>
- <h:form>
+ <h:form id="sellForm">
<div class="navBar">
<div class="navBarLeft">
@@ -67,7 +67,7 @@
</div>
<div class="navBarRight">
- <h:commandButton value="Next >" action="next"/>
+ <h:commandButton id="next" value="Next >" action="next"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell5.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell5.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seambay/view/sell5.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -28,7 +28,7 @@
Enter a detailed description of the item you wish to sell
</div>
- <h:form>
+ <h:form id="sellForm">
<div class="formRow">
<h:inputTextarea id="description" value="#{auctionAction.auction.description}" styleClass="description"/>
@@ -41,7 +41,7 @@
</div>
<div class="navBarRight">
- <h:commandButton value="Next >" action="next"/>
+ <h:commandButton id="next" value="Next >" action="next"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/createBlog.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/createBlog.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/createBlog.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -32,7 +32,7 @@
</s:div>
<div class="blogEntry">
- <h:form>
+ <h:form id="newBlog">
<div class="formRow">
<h:outputLabel for="title">Please type a title for your blog entry</h:outputLabel><br/>
@@ -45,8 +45,8 @@
</div>
<div class="buttons">
- <h:commandButton action="#{blog.saveEntry}" value="Add entry" styleClass="action"/>
- <h:commandButton value="Preview" styleClass="action"/>
+ <h:commandButton id="submit" action="#{blog.saveEntry}" value="Add entry" styleClass="action"/>
+ <h:commandButton id="preview" value="Preview" styleClass="action"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/home.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/home.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/home.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -23,11 +23,11 @@
<div id="contentSide">
<div class="advertising"></div>
- <h:form rendered="#{not identity.loggedIn}">
+ <h:form id="loginForm" rendered="#{not identity.loggedIn}">
<div class="memberLogin">
<div class="loginHeader">Member Login</div>
- <h:messages globalOnly="true"/>
+ <h:messages id="messages" globalOnly="true"/>
<div class="loginRow">
<h:outputLabel for="name" value="Member name" styleClass="loginLabel"/>
@@ -53,8 +53,8 @@
</div>
<div class="buttons">
- <h:commandButton value="LOGIN" action="#{identity.login}" styleClass="loginButton"/>
- <h:commandButton value="SIGN UP!" action="#{register.start}" styleClass="registerButton"/>
+ <h:commandButton id="login" value="LOGIN" action="#{identity.login}" styleClass="loginButton"/>
+ <h:commandButton id="register" value="SIGN UP!" action="#{register.start}" styleClass="registerButton"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/profile.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/profile.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/profile.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -48,11 +48,11 @@
</div>
</ui:repeat>
- [<s:link view="/blog.seam" value="View all blog entries" propagation="none">
+ [<s:link id="viewBlog" view="/blog.seam" value="View all blog entries" propagation="none">
<f:param name="name" value="#{selectedMember.memberName}"/>
</s:link>]
- <s:span rendered="#{s:hasPermission('blog', 'create', selectedMember)}">
+ <s:span id="createBlog" rendered="#{s:hasPermission('blog', 'create', selectedMember)}">
[<s:link action="#{blog.createEntry}" value="Create new blog entry" propagation="none"/>]
</s:span>
</s:div>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/template.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/template.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/template.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -17,8 +17,8 @@
<div class="headerRight">
<div class="headerMenu">
<!--s:link action="" value="SignUp"/-->
- <s:link action="#{identity.logout}" value="Log out" rendered="#{identity.loggedIn}"/>
- <h:outputLink value="home.seam" rendered="#{not identity.loggedIn}">Log in</h:outputLink>
+ <s:link id="logout" action="#{identity.logout}" value="Log out" rendered="#{identity.loggedIn}"/>
+ <h:outputLink id="login" value="home.seam" rendered="#{not identity.loggedIn}">Log in</h:outputLink>
</div>
<br style="clear:both"/>
<h:form>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/userdetail.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/userdetail.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/userdetail.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -51,8 +51,8 @@
</div>
<div class="formButtons">
- <h:commandButton value="Save" action="#{userAction.save}" styleClass="formButton"/>
- <s:button view="/usermanager.xhtml" value="Cancel" propagation="end" styleClass="formButton"/>
+ <h:commandButton id="save" value="Save" action="#{userAction.save}" styleClass="formButton"/>
+ <s:button id="cancel" view="/usermanager.xhtml" value="Cancel" propagation="end" styleClass="formButton"/>
</div>
<br class="clear"/>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/usermanager.xhtml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/usermanager.xhtml 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/seamspace/view/usermanager.xhtml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -21,7 +21,7 @@
<h2>User Manager</h2>
- <s:button action="#{userAction.createUser}" styleClass="newuser" rendered="#{s:hasPermission('seam.account', 'create', null)}"/>
+ <s:button id="newUser" action="#{userAction.createUser}" styleClass="newuser" rendered="#{s:hasPermission('seam.account', 'create', null)}"/>
<rich:dataTable
id="threads"
@@ -51,14 +51,14 @@
<rich:column width="auto">
#{userSearch.getUserRoles(user)}
</rich:column>
- <rich:column width="auto">
+ <rich:column id="enabled" width="auto">
<div class="#{identityManager.isEnabled(user) ? 'checkmark' : 'cross'}"/>
</rich:column>
- <rich:column width="auto">
+ <rich:column id="action" width="auto">
<s:fragment rendered="#{s:hasPermission('seam.account', 'update', null)}">
- <s:link value="Edit" action="#{userAction.editUser(userSearch.selectedUser)}"/><span> | </span>
+ <s:link id="edit" value="Edit" action="#{userAction.editUser(userSearch.selectedUser)}"/><span> | </span>
</s:fragment>
- <s:link value="Delete" action="#{identityManager.deleteAccount(userSearch.selectedUser)}"
+ <s:link id="delete" value="Delete" action="#{identityManager.deleteAccount(userSearch.selectedUser)}"
rendered="#{s:hasPermission('seam.account', 'delete', null)}"
onclick="return confirmDelete()"/>
</rich:column>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/login.jsp
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/login.jsp 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/login.jsp 2009-02-18 16:07:30 UTC (rev 10055)
@@ -7,10 +7,10 @@
<body>
<h1>Login</h1>
<f:view>
- <h:form>
+ <h:form id="login">
<div>
- <h:inputText value="#{login.user}"/>
- <h:commandButton value="Login" action="#{login.login}"/>
+ <h:inputText id="username" value="#{login.user}"/>
+ <h:commandButton id="submit" value="Login" action="#{login.login}"/>
</div>
</h:form>
</f:view>
Modified: branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/todo.jsp
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/todo.jsp 2009-02-18 14:03:11 UTC (rev 10054)
+++ branches/enterprise/JBPAPP_4_3_FP01/examples/todo/view/todo.jsp 2009-02-18 16:07:30 UTC (rev 10055)
@@ -10,13 +10,13 @@
<f:view>
<h:form id="list">
<div>
- <h:outputText value="There are no todo items." rendered="#{empty taskInstancePriorityList}"/>
- <h:dataTable value="#{taskInstancePriorityList}" var="task" rendered="#{not empty taskInstancePriorityList}">
+ <h:outputText id="noItems" value="There are no todo items." rendered="#{empty taskInstancePriorityList}"/>
+ <h:dataTable id="items" value="#{taskInstancePriorityList}" var="task" rendered="#{not empty taskInstancePriorityList}">
<h:column>
<f:facet name="header">
<h:outputText value="Description"/>
</f:facet>
- <h:inputText value="#{task.description}" style="width: 400"/>
+ <h:inputText id="description" value="#{task.description}" style="width: 400"/>
</h:column>
<h:column>
<f:facet name="header">
@@ -30,18 +30,18 @@
<f:facet name="header">
<h:outputText value="Priority"/>
</f:facet>
- <h:inputText value="#{task.priority}" style="width: 30"/>
+ <h:inputText id="priority" value="#{task.priority}" style="width: 30"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Due Date"/>
</f:facet>
- <h:inputText value="#{task.dueDate}" style="width: 100">
+ <h:inputText id="dueDate" value="#{task.dueDate}" style="width: 100">
<s:convertDateTime type="date" dateStyle="short"/>
</h:inputText>
</h:column>
<h:column>
- <s:button action="#{todoList.done}" taskInstance="#{task}" value="Done"/>
+ <s:button id="done" action="#{todoList.done}" taskInstance="#{task}" value="Done"/>
</h:column>
</h:dataTable>
</div>
@@ -49,13 +49,13 @@
<h:messages/>
</div>
<div>
- <h:commandButton value="Update Items" rendered="#{not empty taskInstanceList}"/>
+ <h:commandButton id="update" value="Update Items" rendered="#{not empty taskInstanceList}"/>
</div>
</h:form>
<h:form id="new">
<div>
- <h:inputText value="#{todoList.description}" style="width: 400"/>
- <h:commandButton value="Create New Item" action="#{todoList.createTodo}"/>
+ <h:inputText id="description" value="#{todoList.description}" style="width: 400"/>
+ <h:commandButton id="create" value="Create New Item" action="#{todoList.createTodo}"/>
</div>
</h:form>
</f:view>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,211 @@
+<?xml version="1.0"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+
+<!-- core build file for executing and managing Seam functional tests -->
+<project name="ftest.base.build" default="testall" basedir=".">
+
+ <!-- Location of Seam -->
+ <dirname property="seam.dir" file="${ant.file.ftest.base.build}/../../../" />
+
+ <!--Import properties -->
+ <property file="ftest.properties" />
+
+ <property name="ftest.dir" value="${seam.dir}/src/test/ftest" />
+
+ <!-- TODO : should the libs be in seam/lib and managed with mvn? -->
+ <property name="lib.dir" value="${ftest.dir}/lib" />
+ <property name="log.dir" value="${ftest.dir}/log" />
+
+ <path id="selenium.server.classpath">
+ <fileset dir="${lib.dir}">
+ <include name="selenium-server-standalone.jar" />
+ </fileset>
+ </path>
+
+ <target name="testall">
+ <antcall target="testall.jboss" />
+ </target>
+
+ <target name="testall.jboss">
+ <property name="container" value="jboss" />
+ <antcall target="start.selenium.server" />
+ <!-- Execute tests for all examples jboss-->
+ <testexample name="blog" />
+ <testexample name="booking" />
+ <testexample name="drools" />
+ <testexample name="dvdstore" />
+ <testexample name="contactlist" />
+ <testexample name="groovybooking" />
+ <testexample name="hibernate" />
+ <testexample name="icefaces" />
+ <testexample name="itext" />
+ <testexample name="jpa" />
+ <testexample name="mail" />
+ <testexample name="messages" />
+ <testexample name="nestedbooking" />
+ <testexample name="numberguess" />
+ <testexample name="quartz" />
+ <testexample name="registration" />
+ <testexample name="remoting/chatroom" />
+ <testexample name="seambay" />
+ <testexample name="seampay" />
+ <testexample name="seamspace" />
+ <testexample name="spring" />
+ <testexample name="todo" />
+ <testexample name="ui" />
+ <antcall target="stop.selenium.server" />
+ </target>
+
+
+ <target name="test">
+ <property name="container" value="jboss" />
+ <antcall target="test.single.example" />
+ </target>
+
+
+ <target name="test.single.example">
+ <antcall target="start.selenium.server" />
+
+ <!-- Execute tests for a specific example-->
+ <testexample name="${test}" />
+
+ <antcall target="stop.selenium.server" />
+ </target>
+
+ <target name="cleanall">
+ <cleanexample name="blog" />
+ <cleanexample name="booking" />
+ <cleanexample name="drools" />
+ <cleanexample name="dvdstore" />
+ <cleanexample name="contactlist" />
+ <cleanexample name="groovybooking" />
+ <cleanexample name="hibernate" />
+ <cleanexample name="icefaces" />
+ <cleanexample name="itext" />
+ <cleanexample name="jpa" />
+ <cleanexample name="mail" />
+ <cleanexample name="messages" />
+ <cleanexample name="nestedbooking" />
+ <cleanexample name="numberguess" />
+ <cleanexample name="quartz" />
+ <cleanexample name="registration" />
+ <cleanexample name="remoting/chatroom" />
+ <cleanexample name="seambay" />
+ <cleanexample name="seampay" />
+ <cleanexample name="seamspace" />
+ <cleanexample name="spring" />
+ <cleanexample name="todo" />
+ <cleanexample name="ui" />
+ </target>
+
+ <target name="undeployall">
+ <property name="container" value="jboss" />
+ <undeployexample name="blog" />
+ <undeployexample name="booking" />
+ <undeployexample name="drools" />
+ <undeployexample name="dvdstore" />
+ <undeployexample name="contactlist" />
+ <undeployexample name="groovybooking" />
+ <undeployexample name="hibernate" />
+ <undeployexample name="icefaces" />
+ <undeployexample name="itext" />
+ <undeployexample name="jpa" />
+ <undeployexample name="mail" />
+ <undeployexample name="messages" />
+ <undeployexample name="nestedbooking" />
+ <undeployexample name="numberguess" />
+ <undeployexample name="quartz" />
+ <undeployexample name="registration" />
+ <undeployexample name="remoting/chatroom" />
+ <undeployexample name="seambay" />
+ <undeployexample name="seampay" />
+ <undeployexample name="seamspace" />
+ <undeployexample name="spring" />
+ <undeployexample name="todo" />
+ <undeployexample name="ui" />
+ </target>
+
+
+ <target name="start.selenium.server">
+ <java classpathref="selenium.server.classpath" classname="org.openqa.selenium.server.SeleniumServer" fork="true" spawn="true">
+ <arg line="-port ${selenium.server.port}" />
+ <arg line="${selenium.server.cmd.args}" />
+ </java>
+
+ <waitfor maxwait="30" maxwaitunit="second">
+ <and>
+ <socket server="${selenium.host}" port="${selenium.server.port}" />
+ <!-- this url will 403, so we say that it should start counting errors at 404 to skip -->
+ <http url="http://${selenium.host}:${selenium.server.port}/selenium-server/core/index.html" errorsBeginAt="404" />
+ </and>
+ </waitfor>
+ </target>
+
+ <target name="stop.selenium.server">
+ <get taskname="selenium-shutdown" src="http://${selenium.host}:${selenium.server.port}/selenium-server/driver/?cmd=shutDown" dest="${log.dir}/server.shutdown.dest.log" ignoreerrors="true" />
+ <echo taskname="selenium-shutdown" message="DGF Errors during shutdown are expected" />
+ </target>
+
+
+ <!-- duplicated from ${seam.dir}/build.xml -->
+ <!-- TODO can we avoid duplication -->
+ <macrodef name="testexample">
+ <attribute name="name" />
+ <attribute name="path" default="examples/@{name}" />
+ <attribute name="message" default="Running functional tests on @{name} example" />
+ <sequential>
+ <echo>@{message}</echo>
+ <callExample path="@{path}" target="test" />
+ </sequential>
+ </macrodef>
+
+ <macrodef name="cleanexample">
+ <attribute name="name" />
+ <attribute name="path" default="examples/@{name}" />
+ <attribute name="message" default="Cleaning @{name} example" />
+ <sequential>
+ <echo>@{message}</echo>
+ <callExample path="@{path}" target="clean" />
+ </sequential>
+ </macrodef>
+
+ <macrodef name="undeployexample">
+ <attribute name="name" />
+ <attribute name="path" default="examples/@{name}" />
+ <sequential>
+ <callExample path="@{path}" target="undeploy.example.jboss" />
+ </sequential>
+ </macrodef>
+
+ <macrodef name="callExample">
+ <attribute name="path" />
+ <attribute name="target" />
+ <sequential>
+ <ant dir="@{path}" target="@{target}" inheritall="false">
+ <property name="container" value="${container}">
+ </property>
+ </ant>
+ </sequential>
+ </macrodef>
+</project>
+
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="blog.ftest.build" basedir="." default="build">
+ <property name="example.name" value="blog" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,34 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Blog example" verbose="2" parallel="false">
+ <test name="blog_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/blog/test/selenium/blog.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-blog" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.blog.test.selenium.NewEntryTest" />
+ <class
+ name="org.jboss.seam.example.blog.test.selenium.SearchTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/NewEntryTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/NewEntryTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/NewEntryTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.blog.test.selenium;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+
+/**
+ *
+ * @author Jozef Hartinger
+ */
+public class NewEntryTest extends SeleniumBlogTest
+{
+
+ @Test(groups="entryTest")
+ public void simpleEntryTest() {
+
+ String id = "simpleBlogEntry";
+ String title = "Simple blog entry";
+ String excerpt = "This is an excerpt";
+ String body = "This is a simple blog entry posted for testing purposes.";
+
+ enterNewEntry(id, title, excerpt, body);
+ browser.open(CONTEXT_PATH + "/seam/entry.xhtml?blogEntryId=" + id);
+ assertFalse("Entry not found.", browser.isElementPresent(getProperty("ENTRY_404")));
+ assertEquals("Unexpected entry title found.", title, browser.getText(getProperty("ENTRY_TITLE")));
+ assertEquals("Unexpected entry body found.", body, browser.getText(getProperty("ENTRY_BODY")));
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SearchTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SearchTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SearchTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.blog.test.selenium;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * Test class for search functionality.
+ * @author Jozef Hartinger
+ */
+public class SearchTest extends SeleniumBlogTest
+{
+
+ @Test(dependsOnGroups="entryTest")
+ public void simpleEntrySearchTest() {
+
+ String id = "searchTestEntry";
+ String title = "Search Test Entry";
+ String excerpt = "";
+ String searchString = "9e107d9d372bb6826bd81d3542a419d6";
+ String body = "This is a simple blog entry used for testing search functionality. " + searchString;
+
+ enterNewEntry(id, title, excerpt, body);
+
+ browser.type(getProperty("SEARCH_FIELD"), searchString);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unexpected search result.", 1, browser.getXpathCount(getProperty("SEARCH_RESULT_COUNT")));
+
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SeleniumBlogTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SeleniumBlogTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/SeleniumBlogTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.blog.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+
+/**
+ * This class holds basic methods for interacting with blog example.
+ * @author Jozef Hartinger
+ */
+public class SeleniumBlogTest extends SeamSeleniumTest
+{
+
+ protected String password = "tokyo";
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + "/seam/index.xhtml");
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ protected void enterNewEntry(String id, String title, String excerpt, String body)
+ {
+ browser.click(getProperty("NEW_POST"));
+ browser.waitForPageToLoad(TIMEOUT);
+ if (browser.getLocation().contains(getProperty("LOGIN_URL")))
+ {
+ login();
+ }
+ fillNewEntryForm(id, title, excerpt, body);
+ }
+
+ protected void fillNewEntryForm(String id, String title, String excerpt, String body)
+ {
+ browser.type(getProperty("NEW_ENTRY_ID"), id);
+ browser.type(getProperty("NEW_ENTRY_TITLE"), title);
+ browser.type(getProperty("NEW_ENTRY_EXCERPT"), excerpt);
+ browser.type(getProperty("NEW_ENTRY_BODY"), body);
+ browser.click(getProperty("NEW_ENTRY_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ protected void login()
+ {
+ browser.type(getProperty("LOGIN_PASSWORD"), password);
+ browser.click(getProperty("LOGIN_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/blog.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/blog.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/blog/src/org/jboss/seam/example/blog/test/selenium/blog.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,15 @@
+NEW_POST id=newPost
+LOGIN_PASSWORD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGIN_URL login
+NEW_ENTRY_ID id=newBlogEntry:id:idInput
+NEW_ENTRY_TITLE id=newBlogEntry:title:titleInput
+NEW_ENTRY_EXCERPT id=newBlogEntry:excerpt:excerptInput
+NEW_ENTRY_BODY id=newBlogEntry:body:bodyInput
+NEW_ENTRY_SUBMIT id=newBlogEntry:post
+ENTRY_404 id=404
+ENTRY_TITLE id=title
+ENTRY_BODY id=body
+SEARCH_FIELD id=searchForm:field
+SEARCH_SUBMIT id=searchForm:submit
+SEARCH_RESULT_COUNT //table[@id="searchResultTable"]/tbody/tr
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="booking.ftest.build" basedir="." default="build">
+ <property name="example.name" value="booking" />
+ <property name="jboss.example.ready.check.url" value="seam-booking/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,40 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+ <test name="booking_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/booking/test/selenium/booking.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-booking" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/booking.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/booking.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/booking.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE Re-enter new password
+PASSWORD_VALUE_REQUIRED_MESSAGE //span[text() = 'value is required']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=searchCriteria:searchString
+SEARCH_SUBMIT id=searchCriteria:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:checkinDateDecorate:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:checkoutDateDecorate:message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=registration:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=registration:usernameDecorate:message
+REGISTRATION_NAME id=registration:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=registration:nameDecorate:message
+REGISTRATION_PASSWORD id=registration:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=registration:passwordDecorate:message
+REGISTRATION_VERIFY id=registration:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=registration:verifyDecorate:message
+REGISTRATION_SUBMIT id=registration:register
+REGISTRATION_REENTER_MESSAGE Re-enter your password
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id='ConversationListForm:ConversationListDataTable']/tbody/tr
+SPINNER id\=searchCriteria\:SpinnerGif
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/booking/src/org/jboss/seam/example/booking/test/selenium/booking.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="ftest.example.common.build" basedir="." default="build">
+
+ <!-- Location of Seam -->
+ <dirname property="seam.dir" file="${ant.file.ftest.example.common.build}/../../../../" />
+
+ <!-- default property setup -->
+ <property file="${seam.dir}/src/test/ftest/ftest.properties" />
+
+ <property name="ftest.dir" value="${seam.dir}/src/test/ftest" />
+ <property name="src.dir" value="src" />
+ <property name="common.src.dir" value="${ftest.dir}/src/main" />
+ <property name="build.dir" value="build" />
+ <property name="classes.dir" value="${build.dir}/classes" />
+ <property name="test.output.dir" value="${seam.dir}/test-output" />
+ <property name="ftest.lib.dir" value="${ftest.dir}/lib" />
+ <property name="log.dir" value="log" />
+ <property name="test.report.dir" value="test-report" />
+
+ <!-- common path setup -->
+
+ <path id="classpath.build">
+ <fileset dir="${ftest.lib.dir}" includes="**/*.jar" />
+ </path>
+
+ <path id="classpath.test">
+ <path refid="classpath.build" />
+ <path location="${classes.dir}" />
+ </path>
+
+ <!-- common target definitions -->
+
+ <target name="clean" description="Delete all generated files">
+ <delete dir="${build.dir}" />
+ <delete dir="${test.output.dir}" />
+ <delete dir="${report.dir}" />
+ <delete dir="${log.dir}" />
+ </target>
+
+ <target name="build" depends="build.common" description="Compiles the Test">
+ <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath.build" debug="true" />
+ <copy todir="${classes.dir}">
+ <fileset dir="src">
+ <exclude name="**/*.java" />
+ </fileset>
+ </copy>
+ </target>
+
+ <!-- TODO we should compile this once to a common place not build for each example -->
+ <!-- TODO if needed we should allow examples to exclude/include src under
+ common dvd does not care about booking for example-->
+ <target name="build.common" description="Compiles the common selenium test code">
+ <mkdir dir="${classes.dir}" />
+ <javac srcdir="${common.src.dir}" destdir="${classes.dir}" classpathref="classpath.build" debug="true" />
+ <copy todir="${classes.dir}">
+ <fileset dir="src">
+ <exclude name="**/*.java" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="selenium.test" depends="build" description="Run Tests">
+ <taskdef resource="testngtasks" classpathref="classpath.test" />
+ <mkdir dir="${test.output.dir}" />
+
+ <!-- execute testng tests -->
+ <testng haltonfailure="false" outputdir="${test.output.dir}" classpathref="classpath.test">
+ <xmlfileset file="${container}.xml" />
+ <sysproperty key="selenium.server.port" value="${selenium.server.port}" />
+ <sysproperty key="selenium.host" value="${selenium.host}" />
+ <sysproperty key="selenium.browser" value="${selenium.browser}" />
+ <sysproperty key="selenium.browser.url" value="${selenium.browser.url}" />
+ <sysproperty key="selenium.speed" value="${selenium.speed}" />
+ <sysproperty key="selenium.timeout" value="${selenium.timeout}" />
+ </testng>
+ </target>
+
+ <target name="test" depends="build" description="Run Tests">
+ <!-- TODO all of these jboss commands must be optional with checks -->
+ <!-- TODO go get JBoss and extract -->
+
+ <!-- TODO start JBoss -->
+ <!-- clean example -->
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="clean" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+
+ <!-- deploy the example-->
+ <antcall target="deploy.example.${container}" />
+
+ <!-- execute testng tests -->
+ <antcall target="selenium.test" />
+
+ <!-- undeploy the example -->
+ <antcall target="undeploy.example.${container}" />
+
+ <!-- TODO stop jboss -->
+
+ <!-- TODO remove jboss -->
+ </target>
+
+ <!-- TODO get this to next level too - how to combine into one report -->
+ <target name="testreport" depends="test" description="generate html report">
+ <mkdir dir="${test.report.dir}" />
+ <junitreport todir="${test.report.dir}">
+ <fileset dir="${test.output.dir}">
+ <include name="**/*.xml" />
+ <exclude name="**/testng-*.xml" />
+ </fileset>
+ <report format="noframes" todir="${test.report.dir}" />
+ </junitreport>
+ <echo>Report available at ${report.dir}/junit-noframes.html</echo>
+ </target>
+
+ <target name="deploy.example.jboss">
+ <deploy.example target="${jboss.deploy.target}" wait.url="${jboss.example.ready.check.url}" wait.time="${jboss.deploy.waittime}" />
+ </target>
+
+ <target name="undeploy.example.jboss">
+ <undeploy.example target="${jboss.undeploy.target}" />
+ </target>
+
+ <target name="deploy.example.tomcat6">
+ <deploy.example target="${tomcat6.deploy.target}" wait.url="${tomcat6.example.ready.check.url}" wait.time="${tomcat6.deploy.waittime}" />
+ </target>
+
+ <target name="undeploy.example.tomcat6">
+ <undeploy.example target="${tomcat6.undeploy.target}" />
+ </target>
+
+ <target name="deploy.example.jboss-embedded">
+ <deploy.example target="${jboss-embedded.deploy.target}" wait.url="${jboss-embedded.example.ready.check.url}" wait.time="${jboss-embedded.deploy.waittime}" />
+ </target>
+
+ <target name="undeploy.example.jboss-embedded">
+ <undeploy.example target="${jboss-embedded.undeploy.target}" />
+ </target>
+
+ <macrodef name="deploy.example">
+ <attribute name="target" />
+ <attribute name="wait.url" />
+ <attribute name="wait.time" />
+ <attribute name="absolute.wait.url" default="${selenium.browser.url}/(a){wait.url}"/>
+ <sequential>
+ <echo>Deploying ${example.name} example to ${container}</echo>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="@{target}" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+ <!-- wait for the application to be active -->
+ <!-- TODO is there a better way? -->
+ <echo>Waiting @{wait.time} seconds for @{absolute.wait.url}</echo>
+ <waitfor maxwait="@{wait.time}" maxwaitunit="second">
+ <and>
+ <!-- wait for the application to not throw 404 -->
+ <http url="@{absolute.wait.url}" errorsBeginAt="404" />
+ </and>
+ </waitfor>
+ </sequential>
+ </macrodef>
+
+ <macrodef name="undeploy.example">
+ <attribute name="target" />
+ <sequential>
+ <echo>Undeploying example ${example.name} from ${container}</echo>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="@{target}" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+ </sequential>
+ </macrodef>
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="contactlist.ftest.build" basedir="." default="build">
+ <property name="example.name" value="contactlist" />
+ <property name="jboss.example.ready.check.url" value="seam-contactlist/search.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,34 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Contactlist example" verbose="2" parallel="false">
+ <test name="contactlist_jboss">
+ <parameter name="PROPERTY_FILE" value="empty" />
+ <parameter name="CONTEXT_PATH" value="/seam-contactlist" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.contactlist.test.selenium.ContactCRUDTest" />
+ <class
+ name="org.jboss.seam.example.contactlist.test.selenium.CommentTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/CommentTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/CommentTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/CommentTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,62 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.contactlist.test.selenium;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
+
+import com.thoughtworks.selenium.Wait;
+
+public class CommentTest extends SeleniumContactlistTest {
+
+ @Test
+ public void testComment() {
+ String firstName = "Gavin";
+ String lastName = "King";
+ String message = "founder of the Hibernate open source object/relational mapping project";
+ // find contact
+ browser.open(CONTEXT_PATH + START_PAGE);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(SEARCH_SUBMIT);
+ }
+ }.wait("Search submit link not found.");
+ search(firstName, lastName);
+ assertTrue("Contact not found. Application is in unexpected state.",
+ searchResultPresent(firstName, lastName));
+ browser.click(SEARCH_RESULT_FIRST_ROW_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ // submit comment
+ browser.type(COMMENT_TEXTAREA, message);
+ browser.click(COMMENT_SUBMIT);
+ browser.waitForPageToLoad(TIMEOUT);
+ // assert comment is stored
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ search(firstName, lastName);
+ browser.click(SEARCH_RESULT_FIRST_ROW_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Comment is not stored.", browser
+ .isTextPresent(message));
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/CommentTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactCRUDTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactCRUDTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactCRUDTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,154 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.contactlist.test.selenium;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
+import com.thoughtworks.selenium.Wait;
+
+public class ContactCRUDTest extends SeleniumContactlistTest {
+
+ // used for creation test
+ private Person john = new Person("John", "Doe", "0123456789", "0123456789",
+ "Street", "City", "State", "01234", "US");
+ private Person jane = new Person("Jane", "Doe", "0123456789", "0123456789",
+ "Street", "City", "State", "01234", "US");
+ // used for edit test
+ private Person jozef = new Person("Jozef", "Hartinger", "0123456789",
+ "0123456789", "Cervinkova 99", "Brno", "Czech Republic", "01234",
+ "CZ");
+
+ @Test
+ public void testCreateContact() {
+ browser.open(CONTEXT_PATH + START_PAGE);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(CREATE_CONTACT_PAGE);
+ }
+ }.wait("Create contact link not found.");
+ browser.click(CREATE_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ fillCreateContactForm(john);
+ browser.click(CREATE_CONTACT_SUBMIT);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(SEARCH_CONTACT_PAGE);
+ }
+ }.wait("Search link not found.");
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ search(john);
+ assertTrue("Creating new contact failed.", searchResultPresent(john));
+ }
+
+ @Test
+ public void testCreationCanceling() {
+ browser.open(CONTEXT_PATH + START_PAGE);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(CREATE_CONTACT_PAGE);
+ }
+ }.wait("Create contact link not found.");
+ browser.click(CREATE_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ fillCreateContactForm(jane);
+ browser.click(CREATE_CONTACT_CANCEL);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(SEARCH_CONTACT_PAGE);
+ }
+ }.wait("Search link not found.");
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(SEARCH_FIRST_NAME_FIELD, jane.getFirstName());
+ browser.type(SEARCH_LAST_NAME_FIELD, jane.getLastName());
+ browser.click(SEARCH_SUBMIT);
+ browser.waitForPageToLoad(TIMEOUT);
+ assertFalse("New contact created despite cancel.", searchResultPresent(jane));
+ }
+
+ @Test
+ public void testEditContact() {
+ String firstName = "Shane";
+ String lastName = "Bryzak";
+ // find contact
+ browser.open(CONTEXT_PATH + START_PAGE);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(SEARCH_SUBMIT);
+ }
+ }.wait("Search submit link not found.");
+ search(firstName, lastName);
+ assertTrue("Contact not found. Application is in unexpected state.",
+ searchResultPresent(firstName, lastName));
+ browser.click(SEARCH_RESULT_FIRST_ROW_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(EDIT_CONTACT_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ // update form fields
+ fillCreateContactForm(jozef);
+ browser.click(UPDATE_CONTACT_SUBMIT);
+ browser.waitForPageToLoad(TIMEOUT);
+ // make sure new values are present
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ search(jozef);
+ assertTrue("Contact update failed. New values missing", searchResultPresent(jozef));
+ // make sure old values are not present
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ search(firstName, lastName);
+ assertFalse("Contact update failed. Old values still present", searchResultPresent(firstName, lastName));
+ }
+
+ @Test
+ public void testRemoveContact() {
+ String firstName = "Norman";
+ String lastName = "Richards";
+ // find contact
+ browser.open(CONTEXT_PATH + START_PAGE);
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(SEARCH_SUBMIT);
+ }
+ }.wait("Search submit link not found.");
+ search(firstName, lastName);
+ assertTrue("Contact not found. Application is in unexpected state.",
+ searchResultPresent(firstName, lastName));
+ browser.click(SEARCH_RESULT_FIRST_ROW_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ // remove contact
+ browser.click(REMOVE_CONTACT_LINK);
+ browser.waitForPageToLoad(TIMEOUT);
+ // assert contact is removed
+ browser.click(SEARCH_CONTACT_PAGE);
+ browser.waitForPageToLoad(TIMEOUT);
+ search(firstName, lastName);
+ assertFalse("Contact present despite it should be removed.", searchResultPresent(firstName, lastName));
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactCRUDTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactlistConstants.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactlistConstants.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactlistConstants.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.contactlist.test.selenium;
+
+public interface ContactlistConstants {
+
+ public static String START_PAGE = "/";
+ public static String SEARCH_CONTACT_PAGE = "id=search";
+ public static String SEARCH_FIRST_NAME_FIELD = "id=searchForm:firstName";
+ public static String SEARCH_LAST_NAME_FIELD = "id=searchForm:lastName";
+ public static String SEARCH_SUBMIT = "id=searchForm:submit";
+ public static String CREATE_CONTACT_PAGE = "id=create";
+ public static String CREATE_CONTACT_SUBMIT = "id=editForm:createContact";
+ public static String CREATE_CONTACT_CANCEL = "id=editForm:cancel";
+ public static String FIRST_NAME_FIELD = "id=editForm:firstNameDecorate:firstName";
+ public static String LAST_NAME_FIELD = "id=editForm:lastNameDecorate:lastName";
+ public static String CELL_PHONE_FIELD = "id=editForm:cellPhoneDecorate:cellPhone";
+ public static String HOME_PHONE_FIELD = "id=editForm:homePhoneDecorate:homePhone";
+ public static String ADDRESS_FIELD = "id=editForm:addressDecorate:address";
+ public static String CITY_FIELD = "id=editForm:cityDecorate:city";
+ public static String STATE_FIELD = "id=editForm:stateDecorate:state";
+ public static String ZIP_FIELD = "id=editForm:zipDecorate:zip";
+ public static String COUNTRY_FIELD = "id=editForm:countryDecorate:country";
+ public static String EDIT_CONTACT_LINK = "editContact";
+ public static String UPDATE_CONTACT_SUBMIT = "editForm:updateContact";
+ public static String EDIT_FORM_REMOVE_CONTACT_LINK = "id=editForm:deleteContact";
+ public static String REMOVE_CONTACT_LINK = "id=deleteContact";
+ public static String SEARCH_RESULT_FIRST_ROW_LINK = "id=searchResult:0:link";
+ public static String SEARCH_RESULT_FIRST_ROW_CELL_PHONE = "id=searchResult:0:cellPhone";
+ public static String SEARCH_RESULT_FIRST_ROW_HOME_PHONE = "id=searchResult:0:homePhone";
+ public static String SEARCH_RESULT_FIRST_ROW_ADDRESS = "id=searchResult:0:address";
+ public static String SEARCH_RESULT_FIRST_ROW_CITY = "id=searchResult:0:city";
+ public static String SEARCH_RESULT_FIRST_ROW_STATE = "id=searchResult:0:state";
+ public static String SEARCH_RESULT_FIRST_ROW_ZIP = "id=searchResult:0:zip";
+ public static String SEARCH_RESULT_FIRST_ROW_COUNTRY = "id=searchResult:0:country";
+ public static String COMMENT_TEXTAREA = "commentForm:text";
+ public static String COMMENT_SUBMIT = "commentForm:submit";
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/ContactlistConstants.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/Person.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/Person.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/Person.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,121 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.contactlist.test.selenium;
+
+public class Person {
+ private String firstName;
+ private String lastName;
+ private String cellPhone;
+ private String homePhone;
+ private String address;
+ private String city;
+ private String state;
+ private String zip;
+ private String country;
+
+ public Person(String firstName, String lastName, String cellPhone, String homePhone,
+ String address, String city, String state, String zip, String country) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.cellPhone = cellPhone;
+ this.homePhone = homePhone;
+ this.address = address;
+ this.city = city;
+ this.state = state;
+ this.zip = zip;
+ this.country = country;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+
+ public String getCellPhone() {
+ return cellPhone;
+ }
+
+ public void setCellPhone(String cellPhone) {
+ this.cellPhone = cellPhone;
+ }
+
+ public String getHomePhone() {
+ return homePhone;
+ }
+
+ public void setHomePhone(String homePhone) {
+ this.homePhone = homePhone;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getZip() {
+ return zip;
+ }
+
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/Person.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/SeleniumContactlistTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/SeleniumContactlistTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/contactlist/src/org/jboss/seam/example/contactlist/test/selenium/SeleniumContactlistTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.contactlist.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+
+public class SeleniumContactlistTest extends SeamSeleniumTest implements ContactlistConstants {
+
+ public boolean searchResultPresent(String firstName, String lastName) {
+ return browser.isElementPresent(SEARCH_RESULT_FIRST_ROW_LINK) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_LINK).equals(firstName + " " + lastName);
+ }
+
+ public boolean searchResultPresent(Person person) {
+ return searchResultPresent(person.getFirstName(), person.getLastName()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_CELL_PHONE).equals(person.getCellPhone()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_HOME_PHONE).equals(person.getHomePhone()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_ADDRESS).equals(person.getAddress()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_CITY).equals(person.getCity()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_STATE).equals(person.getState()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_ZIP).equals(person.getZip()) &&
+ browser.getText(SEARCH_RESULT_FIRST_ROW_COUNTRY).equals(person.getCountry());
+ }
+
+ public void fillCreateContactForm(Person person) {
+ browser.type(FIRST_NAME_FIELD, person.getFirstName());
+ browser.type(LAST_NAME_FIELD, person.getLastName());
+ browser.type(CELL_PHONE_FIELD, person.getCellPhone());
+ browser.type(HOME_PHONE_FIELD, person.getHomePhone());
+ browser.type(ADDRESS_FIELD, person.getAddress());
+ browser.type(CITY_FIELD, person.getCity());
+ browser.type(STATE_FIELD, person.getState());
+ browser.type(ZIP_FIELD, person.getZip());
+ browser.type(COUNTRY_FIELD, person.getCountry());
+ }
+
+ public void search(String firstName, String lastName) {
+ browser.type(SEARCH_FIRST_NAME_FIELD, firstName);
+ browser.type(SEARCH_LAST_NAME_FIELD, lastName);
+ browser.click(SEARCH_SUBMIT);
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ public void search(Person person) {
+ search(person.getFirstName(), person.getLastName());
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="drools.ftest.build" basedir="." default="build">
+ <property name="example.name" value="drools" />
+ <property name="jboss.example.ready.check.url" value="seam-drools/numberGuess.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,32 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Drools example" verbose="2" parallel="false">
+ <test name="drools_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/drools/test/selenium/drools.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-drools" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.numberguess.selenium.CommonNumberGuessTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/selenium/drools.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/selenium/drools.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/drools/src/org/jboss/seam/example/drools/test/selenium/drools.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,29 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+MAIN_PAGE /numberGuess.seam
+GUESS_LOCATION numberGuess.seam
+WIN_LOCATION win.seam
+LOSE_LOCATION lose.seam
+GUESS_MAX_VALUE NumberGuessMain:Biggest
+GUESS_MIN_VALUE NumberGuessMain:Smallest
+GUESS_FIELD NumberGuessMain:inputGuess
+GUESS_SUBMIT NumberGuessMain\:GuessButton
\ No newline at end of file
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="dvdstore.ftest.build" basedir="." default="build">
+ <property name="example.name" value="dvdstore" />
+ <property name="jboss.example.ready.check.url" value="seam-dvdstore/search.seam" />
+
+ <import file="../build.xml" />
+
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,38 @@
+<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ by the @authors tag. See the copyright.txt in the distribution for a
+ full listing of individual contributors.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="DVD example" verbose="2" parallel="false">
+ <test name="dvdstore_jboss">
+ <parameter name="PROPERTY_FILE"
+ value="/org/jboss/seam/example/dvd/test/selenium/dvd.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-dvd" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.dvd.test.selenium.LoginTest" />
+<!-- <class name="org.jboss.seam.example.dvd.test.selenium.RegistrationTest" />-->
+ <class
+ name="org.jboss.seam.example.dvd.test.selenium.SearchTest" />
+ <class
+ name="org.jboss.seam.example.dvd.test.selenium.ShoppingCartTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/LoginTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/LoginTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/LoginTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+import static org.testng.AssertJUnit.*;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ * This class tests user authentication. Majority of other tests depends on
+ * these methods.
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class LoginTest extends SeleniumDvdTest {
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ }
+
+ @Test(groups = { "login.basic" })
+ public void basicLoginTest() {
+ String username = "user1";
+ String password = "password";
+ assertTrue("Login failed.", login(username, password));
+ }
+
+ @Test(groups = { "login.basic" })
+ public void invalidLoginTest() {
+ String username = "nonExistingUser";
+ String password = "invalidPassword";
+ assertFalse("Logged in despite invalid credentials.", login(username,
+ password));
+ }
+
+ @Test(groups = { "login.admin" })
+ public void adminLoginTest() {
+ String username = "manager";
+ String password = "password";
+ assertTrue("Login failed.", login(username, password));
+ assertTrue("Navigation failed", browser.getLocation().contains(
+ getProperty("ADMIN_URL")));
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/LoginTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/Person.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/Person.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/Person.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,213 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+/**
+ * This class is used by Registration tests
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class Person {
+
+ private String username;
+ private String password;
+ private String verify;
+ private String firstName;
+ private String lastName;
+ private String address;
+ private String address2;
+ private String city;
+ private String state;
+ private String zip;
+ private String email;
+ private String phone;
+ private String cardType;
+ private String cardNumber;
+
+ public String getCardType() {
+ return cardType;
+ }
+
+ public void setCardType(String cardType) {
+ this.cardType = cardType;
+ }
+
+ public String getCardNumber() {
+ return cardNumber;
+ }
+
+ public void setCardNumber(String cardNumber) {
+ this.cardNumber = cardNumber;
+ }
+
+ public Person() {
+ }
+
+ public Person(String address, String address2, String cardNumber,
+ String cardType, String city, String email, String firstName,
+ String lastName, String password, String phone, String state,
+ String username, String verify, String zip) {
+ this.address = address;
+ this.address2 = address2;
+ this.cardNumber = cardNumber;
+ this.cardType = cardType;
+ this.city = city;
+ this.email = email;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.password = password;
+ this.phone = phone;
+ this.state = state;
+ this.username = username;
+ this.verify = verify;
+ this.zip = zip;
+ }
+
+ public Person(String address, String cardNumber, String cardType,
+ String city, String email, String firstName, String lastName,
+ String password, String phone, String state, String username,
+ String verify, String zip) {
+ this(address, address, cardNumber, cardType, city, email, firstName,
+ lastName, password, phone, state, username, verify, zip);
+ }
+
+ public Person(String address, String address2, String city, String email,
+ String firstName, String lastName, String password, String phone,
+ String state, String username, String verify, String zip) {
+ this(address, address2, "MasterCard", "000-0000-0000", city, email,
+ firstName, lastName, password, phone, state, username, verify,
+ zip);
+ }
+
+ public Person(String address, String city, String email, String firstName,
+ String lastName, String password, String phone, String state,
+ String username, String verify, String zip) {
+ this(address, address, "MasterCard", "000-0000-0000", city, email,
+ firstName, lastName, password, phone, state, username, verify,
+ zip);
+ }
+
+ public Person(String username, String password, String verify) {
+ super();
+ this.password = password;
+ this.username = username;
+ this.verify = verify;
+ }
+
+ public String getVerify() {
+ return verify;
+ }
+
+ public void setVerify(String verify) {
+ this.verify = verify;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getAddress2() {
+ return address2;
+ }
+
+ public void setAddress2(String address2) {
+ this.address2 = address2;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getZip() {
+ return zip;
+ }
+
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/Person.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/RegistrationTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/RegistrationTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/RegistrationTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,173 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+import static org.testng.AssertJUnit.*;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.thoughtworks.selenium.Wait;
+
+/**
+ * This class tests the registration functionality of dvdstore example
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class RegistrationTest extends SeleniumDvdTest {
+
+ // suffix is needed to allow test to be run repeatedly
+ private String suffix = Long.toString(new Date().getTime() % 10000000);
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(getProperty("REGISTRATION"));
+ }
+ }.wait("Unable to load home page.");
+ browser.click(getProperty("REGISTRATION"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Unable to load registration page.", browser.getLocation()
+ .contains(getProperty("REGISTRATION_FIRST_PAGE_URL")));
+ }
+
+ /**
+ * Tries to register user
+ */
+ @Test
+ public void basicRegistrationTest() {
+ Person person = new Person("Street 123", "012-3456-7890",
+ "Visa", "City", "john(a)example.com", "John", "Doe",
+ "password", "0123456789", "US", "john" + suffix, "password",
+ "01234");
+
+ fillFirstPage(person);
+ assertTrue("Unable to load account page.", browser.getLocation()
+ .contains(getProperty("REGISTRATION_SECOND_PAGE_URL")));
+ fillSecondPage(person);
+ assertTrue("Unable to load card page.", browser.getLocation().contains(
+ getProperty("REGISTRATION_THIRD_PAGE_URL")));
+ fillThirdPage(person);
+ assertTrue("Unable to load confirmation page.", browser.getLocation()
+ .contains(getProperty("REGISTRATION_CONFIRMATION_PAGE_URL")));
+ assertTrue("Registration failed.", browser.isTextPresent(MessageFormat
+ .format(getProperty("REGISTRATION_CONFIRMATION_MESSAGE"),
+ person.getUsername())));
+ assertTrue("User should be logged in after succesful registration.",
+ isLoggedIn(browser));
+ }
+
+ /**
+ * Tests whether validation of input fields works fine.
+ */
+ @Test
+ public void firstPageInvalidValuesTest() {
+ Person person = new Person("t", "t", "t");
+ fillFirstPage(person);
+ assertTrue("Navigation failed.", browser.getLocation().contains(
+ getProperty("REGISTRATION_FIRST_PAGE_URL")));
+ assertEquals("Error messages expected.", 2, browser
+ .getXpathCount(getProperty("REGISTRATION_LENGTH_MESSAGE")));
+ }
+
+ /**
+ * Tests password verification.
+ */
+ @Test
+ public void verifyPasswordTest() {
+ Person person = new Person("tester", "password", "password1");
+ fillFirstPage(person);
+ assertTrue("Navigation failed.", browser.getLocation().contains(
+ getProperty("REGISTRATION_FIRST_PAGE_URL")));
+ assertTrue("Password verify message expected.", browser
+ .isElementPresent(getProperty("REGISTRATION_VERIFY_MESSAGE")));
+ }
+
+ /**
+ * Tries to register user that already exists. Test assumes that user1 is
+ * already registered.
+ */
+ @Test
+ public void duplicateUserTest() {
+ Person person = new Person("user1", "password", "password");
+ fillFirstPage(person);
+ assertTrue("Navigation failed.", browser.getLocation().contains(
+ getProperty("REGISTRATION_FIRST_PAGE_URL")));
+ assertTrue(
+ "Duplicate user error message expected.",
+ browser
+ .isElementPresent(getProperty("REGISTRATION_DUPLICATE_USER_MESSAGE")));
+ }
+
+ private void fillFirstPage(Person person) {
+ browser
+ .type(getProperty("REGISTRATION_USERNAME"), person
+ .getUsername());
+ browser
+ .type(getProperty("REGISTRATION_PASSWORD"), person
+ .getPassword());
+ browser.type(getProperty("REGISTRATION_VERIFY"), person.getVerify());
+ browser.click(getProperty("REGISTRATION_FIRST_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ private void fillSecondPage(Person person) {
+ browser.type(getProperty("REGISTRATION_FIRST_NAME"), person
+ .getUsername());
+ browser.type(getProperty("REGISTRATION_LAST_NAME"), person
+ .getLastName());
+ browser.type(getProperty("REGISTRATION_ADDRESS"), person.getAddress());
+ browser
+ .type(getProperty("REGISTRATION_ADDRESS2"), person
+ .getAddress2());
+ browser.type(getProperty("REGISTRATION_CITY"), person.getCity());
+ browser.type(getProperty("REGISTRATION_STATE"), person.getState());
+ browser.type(getProperty("REGISTRATION_ZIP"), person.getZip());
+ browser.type(getProperty("REGISTRATION_EMAIL"), person.getEmail());
+ browser.type(getProperty("REGISTRATION_PHONE"), person.getPhone());
+ browser.click(getProperty("REGISTRATION_SECOND_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ private void fillThirdPage(Person person) {
+ browser.select(getProperty("REGISTRATION_CARD_TYPE_SELECT"), person
+ .getCardType());
+ browser.type(getProperty("REGISTRATION_CARD_NUMBER"), person
+ .getCardNumber());
+ fillThirdPage();
+ }
+
+ private void fillThirdPage() {
+ browser.click(getProperty("REGISTRATION_THIRD_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/RegistrationTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SearchTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SearchTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SearchTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,102 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+import static org.testng.AssertJUnit.*;
+
+import org.testng.annotations.Test;
+
+/**
+ * This class tests search functionality of the example
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class SearchTest extends SeleniumDvdTest {
+
+ /**
+ * This test does simple search for dvd.
+ */
+ @Test(groups = { "search" }, dependsOnGroups = { "login.basic" })
+ public void testSearch() {
+ String searchString = "top gun";
+ browser.click(getProperty("SHOP"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Navigation failed.", browser.getLocation().contains(
+ getProperty("SHOP_URL")));
+ browser.type(getProperty("SEARCH_FIELD"), searchString);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unexpected number of results. One result expected.", 1,
+ browser.getXpathCount(getProperty("SEARCH_RESULT_ITEM")));
+ browser.click(getProperty("SEARCH_RESULT_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Navigation failure.", browser.getLocation().contains(
+ getProperty("DVD_URL")));
+ }
+
+ /**
+ * This test does simple search in two windows verifying they do not affect
+ * each other
+ */
+ @Test(dependsOnMethods = { "testSearch" }, dependsOnGroups = { "login.basic" })
+ public void testMultipleWindowSearch() {
+ String searchString1 = "Forrest Gump";
+ String searchString2 = "The Shawshank Redemption";
+
+ browser.openWindow(CONTEXT_PATH + getProperty("HOME_PAGE"), "1");
+ browser.selectWindow("1");
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("User should be logged in by now.", isLoggedIn(browser));
+ // search for dvd in first window
+ browser.openWindow(CONTEXT_PATH + getProperty("HOME_PAGE"), "2");
+ browser.selectWindow("2");
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("User should be logged in by now.", isLoggedIn(browser));
+ browser.click(getProperty("SHOP"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("SEARCH_FIELD"), searchString1);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unexpected search result in first window.",
+ searchString1, browser
+ .getText(getProperty("SEARCH_RESULT_FIRST_ROW_LINK")));
+ // search for dvd in second window
+ browser.selectWindow("1");
+ browser.click(getProperty("SHOP"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("SEARCH_FIELD"), searchString2);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unexpected search result in second window.",
+ searchString2, browser
+ .getText(getProperty("SEARCH_RESULT_FIRST_ROW_LINK")));
+ browser.selectWindow("2");
+ browser.refresh();
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unexpected search result in first window after refresh.",
+ searchString1, browser
+ .getText(getProperty("SEARCH_RESULT_FIRST_ROW_LINK")));
+
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SearchTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SeleniumDvdTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SeleniumDvdTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SeleniumDvdTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+import static org.testng.AssertJUnit.fail;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import com.thoughtworks.selenium.Selenium;
+import com.thoughtworks.selenium.Wait;
+
+/**
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public abstract class SeleniumDvdTest extends SeamSeleniumTest {
+
+ protected final String DEFAULT_USERNAME = "user1";
+ protected final String DEFAULT_PASSWORD = "password";
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ super.setUp();
+ login(DEFAULT_USERNAME, DEFAULT_PASSWORD);
+ }
+
+ public boolean login(String username, String password) {
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ new Wait() {
+ @Override
+ public boolean until() {
+ return browser.isElementPresent(getProperty("LOGIN_SUBMIT"));
+ }
+ }.wait("Login page not loaded.");
+ if (isLoggedIn(browser)) {
+ fail("User already logged in.");
+ }
+ browser.type(getProperty("LOGIN_USERNAME"), username);
+ browser.type(getProperty("LOGIN_PASSWORD"), password);
+ browser.click(getProperty("LOGIN_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ return isLoggedIn(browser);
+ }
+
+ @Override
+ @AfterMethod
+ public void tearDown() {
+ logout(browser);
+ super.tearDown();
+ }
+
+ public void logout(Selenium browser) {
+ if (isLoggedIn(browser)) {
+ browser.click(getProperty("LOGOUT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ }
+
+ public boolean isLoggedIn(Selenium browser) {
+ return browser.isElementPresent(getProperty("LOGOUT"));
+ }
+
+
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/SeleniumDvdTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/ShoppingCartTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/ShoppingCartTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/ShoppingCartTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,147 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.dvd.test.selenium;
+
+import static org.testng.AssertJUnit.*;
+
+import java.math.BigDecimal;
+import java.text.MessageFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Currency;
+import java.util.Locale;
+
+import org.testng.annotations.Test;
+
+/**
+ * This class tests shopping cart
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class ShoppingCartTest extends SeleniumDvdTest {
+
+ @Test(dependsOnGroups = { "search" })
+ public void simpleCartTest() {
+ String[] dvds = new String[] { "Top Gun", "Pulp Fiction",
+ "Forrest Gump" };
+ for (String dvd : dvds) {
+ addDVDToCart(dvd);
+ }
+ browser.click(getProperty("CART"));
+ browser.waitForPageToLoad(TIMEOUT);
+ for (String dvd : dvds) {
+ assertTrue("Expected item not present in cart.", browser
+ .isElementPresent(MessageFormat.format(
+ getProperty("CART_TABLE_ROW_BY_NAME"), dvd)));
+ }
+ }
+
+ @Test(dependsOnMethods = { "simpleCartTest" })
+ public void testCartCostCalculation() throws ParseException {
+ String[] dvds = new String[] { "Top Gun", "Pulp Fiction", "Top Gun" };
+ NumberFormat nf = NumberFormat.getCurrencyInstance();
+ nf.setCurrency(Currency.getInstance(Locale.US));
+ BigDecimal expectedSum = BigDecimal.ZERO;
+ for (String dvd : dvds) {
+ addDVDToCart(dvd);
+ }
+ browser.click(getProperty("CART"));
+ browser.waitForPageToLoad(TIMEOUT);
+ int items = browser.getXpathCount(getProperty("CART_TABLE_ITEM"))
+ .intValue();
+ assertNotSame("Cart should not be empty.", 0, items);
+ for (int i = 0; i < items; i++) {
+ BigDecimal quantity = BigDecimal.valueOf(Double.parseDouble(browser
+ .getValue(MessageFormat.format(
+ getProperty("CART_TABLE_QUANTITY_BY_ID"), i))));
+ BigDecimal price = BigDecimal.valueOf(nf.parse(
+ browser.getText(MessageFormat.format(
+ getProperty("CART_TABLE_PRICE_BY_ID"), i)))
+ .doubleValue());
+ BigDecimal priceForCurrentRow = price.multiply(quantity);
+ expectedSum = expectedSum.add(priceForCurrentRow);
+ }
+ BigDecimal actualSum = BigDecimal.valueOf((nf.parse(browser
+ .getText(getProperty("CART_SUBTOTAL"))).doubleValue()));
+ assertEquals("Price sum in cart is incorrect.", 0, expectedSum
+ .compareTo(actualSum));
+ }
+
+ @Test(dependsOnMethods = { "simpleCartTest" })
+ public void testRemovingCartItem() {
+ String dvd = "Top Gun";
+ addDVDToCart(dvd);
+ browser.click(getProperty("CART"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("DVD is not in the cart.", browser
+ .isElementPresent(MessageFormat.format(
+ getProperty("CART_TABLE_ROW_BY_NAME"), dvd)));
+ browser.check(MessageFormat.format(
+ getProperty("CART_TABLE_CHECKBOX_BY_NAME"), dvd));
+ browser.click(getProperty("CART_TABLE_UPDATE_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertFalse("Cart item was not removed.", browser
+ .isElementPresent(MessageFormat.format(
+ getProperty("CART_TABLE_ROW_BY_NAME"), dvd)));
+ }
+
+ /**
+ * This method tries purchasing more copies of The Bourne Identity than are
+ * available in stock
+ */
+ @Test(dependsOnMethods = { "simpleCartTest" })
+ public void testExceedingAvailableItemLimit() {
+ String dvd = "The Bourne Identity";
+ String amount = "300";
+ addDVDToCart(dvd);
+ browser.click(getProperty("CART"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("CART_TABLE_FIRST_ROW_QUANTITY"), amount);
+ browser.click(getProperty("CART_TABLE_UPDATE_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(getProperty("CART_PURCHASE_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(getProperty("CART_CONFIRM_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Message not displayed.", browser
+ .isElementPresent(MessageFormat.format(
+ getProperty("CART_NOT_ENOUGH_COPIES_LEFT"), dvd)));
+ assertTrue(
+ "Order should not be completed.",
+ browser
+ .isElementPresent(getProperty("CART_UNABLE_TO_COMPLETE_ORDER_MESSAGE")));
+ }
+
+ private void addDVDToCart(String dvdName) {
+ assertTrue("User should be logged in.", isLoggedIn(browser));
+ browser.click(getProperty("SHOP"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("SEARCH_FIELD"), dvdName);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.check(getProperty("SEARCH_RESULT_FIRST_ROW_CHECKBOX"));
+ browser.click(getProperty("SEARCH_RESULT_UPDATE_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/ShoppingCartTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/dvd.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/dvd.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/dvd.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,78 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /
+HOME_PAGE_TITLE JBoss DVD Store
+LOGOUT id=LogoutForm:Logout
+REGISTRATION id=LoginForm:CreateAccount
+REGISTRATION_FIRST_PAGE_URL newuser/account
+REGISTRATION_SECOND_PAGE_URL newuser/contact
+REGISTRATION_THIRD_PAGE_URL newuser/card
+REGISTRATION_CONFIRMATION_PAGE_URL newuser/complete
+REGISTRATION_USERNAME id=NewAccountForm:userName
+REGISTRATION_USERNAME_MESSAGE id=NewAccountForm:MessageForUserName
+REGISTRATION_PASSWORD id=NewAccountForm:password
+REGISTRATION_PASSWORD_MESSAGE id=NewAccountForm:MessageForPassword
+REGISTRATION_VERIFY id=NewAccountForm:passwordVerify
+REGISTRATION_FIRST_SUBMIT id=NewAccountForm:ContinueButton
+REGISTRATION_SECOND_SUBMIT id=NewAccountForm:ContinueButton
+REGISTRATION_THIRD_SUBMIT id=NewAccountForm:SubmitNewCustomerButton
+REGISTRATION_FIRST_NAME id=NewAccountForm:firstName
+REGISTRATION_LAST_NAME id=NewAccountForm:lastName
+REGISTRATION_ADDRESS id=NewAccountForm:address1
+REGISTRATION_ADDRESS2 = id=NewAccountForm:Address2
+REGISTRATION_CITY id=NewAccountForm:city
+REGISTRATION_STATE id=NewAccountForm:state
+REGISTRATION_ZIP id=NewAccountForm:zip
+REGISTRATION_EMAIL id=NewAccountForm:email
+REGISTRATION_PHONE id=NewAccountForm:phone
+REGISTRATION_CONFIRMATION_MESSAGE Registered new customer {0}
+REGISTRATION_CARD_TYPE_SELECT id=NewAccountForm:CreditCardMenu
+REGISTRATION_CARD_NUMBER id=NewAccountForm:creditCard
+REGISTRATION_LENGTH_MESSAGE //*[contains(normalize-space(text()), 'length must be between')]
+REGISTRATION_VERIFY_MESSAGE xpath=//*[normalize-space(text()) = 'passwordVerify']
+REGISTRATION_DUPLICATE_USER_MESSAGE xpath=//*[normalize-space(text()) = 'userName']
+LOGIN_USERNAME id=LoginForm:Username
+LOGIN_PASSWORD id=LoginForm:Password
+LOGIN_SUBMIT id=LoginForm:Login
+SHOP id=Shop
+SHOP_URL browse
+CART id=Cart
+SEARCH_FIELD id=SearchForm:Query
+SEARCH_SUBMIT id=SearchForm:Search
+SEARCH_RESULT_ITEM //table[@id='SearchResultsForm:SearchResultsTable']/tbody/tr
+SEARCH_RESULT_FIRST_ROW_LINK id=SearchResultsForm:SearchResultsTable:0:TitleLink
+SEARCH_RESULT_FIRST_ROW_CHECKBOX id=SearchResultsForm:SearchResultsTable:0:AddToCartCheckbox
+SEARCH_RESULT_UPDATE_BUTTON id=SearchResultsForm:SearchUpdateButton
+CART_TABLE_ROW_BY_NAME xpath\=//table[@id\="cartdetails\:CartDetailsForm\:CartItemsTable"]/tbody/tr[normalize-space(td[2]//text()) \= "{0}"]
+CART_TABLE_CHECKBOX_BY_NAME xpath\=//table[@id\="cartdetails\:CartDetailsForm\:CartItemsTable"]/tbody/tr[normalize-space(td[2]//text()) \= "{0}"]/td[1]/input
+CART_TABLE_UPDATE_BUTTON id=cartdetails:CartDetailsForm:UpdateCartButton
+CART_TABLE_ITEM //table[@id='cartdetails:CartDetailsForm:CartItemsTable']/tbody/tr
+CART_TABLE_QUANTITY_BY_ID id=cartdetails:CartDetailsForm:CartItemsTable:{0}:QuantityValueText
+CART_TABLE_PRICE_BY_ID id=cartdetails:CartDetailsForm:CartItemsTable:{0}:PriceValueText
+CART_TABLE_FIRST_ROW_QUANTITY id=cartdetails:CartDetailsForm:CartItemsTable:0:QuantityValueText
+CART_PURCHASE_BUTTON id=cartdetails:purchaseaction:PurchaseActionForm:PurchaseButton
+CART_SUBTOTAL id=cartdetails:CartSubtotalValue
+CART_CONFIRM_BUTTON id=orderdetail:ConfirmOrCancelForm:Confirm
+CART_NOT_ENOUGH_COPIES_LEFT xpath\=//*[normalize-space(text()) \= "There were not enough copies of {0} in stock to fulfill your order."]
+CART_UNABLE_TO_COMPLETE_ORDER_MESSAGE xpath=//*[normalize-space(text()) = 'Your order could not be completed.']
+DVD_URL dvd
+ADMIN_URL admin/admin
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/dvdstore/src/org/jboss/seam/example/dvd/test/selenium/dvd.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="groovybooking.ftest.build" basedir="." default="build">
+ <property name="example.name" value="groovybooking" />
+ <property name="jboss.deploy.target" value="jbosswar.deploy" />
+ <property name="jbosss.example.ready.check.url" value="jboss-seam-groovy/home.seam" />
+
+ <import file="../build.xml" />
+
+ <target name="undeploy.example.jboss">
+ <echo>Undeploying JBoss Example - ${example.name}</echo>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="jbosswar.undeploy" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="${jboss.undeploy.target}" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+ </target>
+
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,41 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Groovybooking example" verbose="2" parallel="false">
+ <test name="groovybooking_jboss">
+ <parameter name="PROPERTY_FILE"
+ value="/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties" />
+ <parameter name="CONTEXT_PATH" value="/jboss-seam-groovy" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE verify
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[@id\='setpassword\:Message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:Message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:Message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE verify
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id\=main\:Spinner
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/groovybooking/src/org/jboss/seam/example/groovybooking/test/selenium/groovybooking.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="hibernate.ftest.build" basedir="." default="build">
+ <property name="example.name" value="hibernate" />
+ <property name="jboss.deploy.target" value="jboss" />
+ <property name="jboss.undeploy.target" value="jboss.undeploy" />
+ <property name="jboss.example.ready.check.url" value="jboss-seam-hibernate/home.seam" />
+ <property name="jboss-embedded.deploy.target" value="jboss-embedded" />
+ <property name="jboss-embedded.undeploy.target" value="jboss-embedded.undeploy" />
+ <property name="jboss-embedded.example.ready.check.url" value="jboss-seam-hibernate/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,41 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Hibernate example" verbose="2" parallel="false">
+ <test name="hibernate_jboss">
+ <parameter name="PROPERTY_FILE"
+ value="/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties" />
+ <parameter name="CONTEXT_PATH" value="/jboss-seam-hibernate" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE verify
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[@id='setpassword:Message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:Message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:Message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE verify
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id\=main\:Spinner
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/hibernate/src/org/jboss/seam/example/hibernate/test/selenium/hibernate.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="icefaces.ftest.build" basedir="." default="build">
+ <property name="example.name" value="icefaces" />
+ <property name="jboss.example.ready.check.url" value="seam-icefaces/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,43 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Icefaces example" verbose="2" parallel="false">
+ <test name="icefaces_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-icefaces" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest">
+ <methods>
+ <include name="backbuttoningAfterLogoutTest"></include>
+ </methods>
+ </class>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,89 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE Re-enter new password
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[contains(@id, 'Decorate:message')]
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=searchCriteria:searchString
+SEARCH_SUBMIT id=searchCriteria:findHotels
+NO_HOTELS_FOUND id=searchResults:NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'searchResults:hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=searchResults:hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDate_calendarInputtext
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:checkinDateDecorate:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDate_calendarInputtext
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:checkoutDateDecorate:message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:_1
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:_2
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=registration:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=registration:usernameDecorate:message
+REGISTRATION_NAME id=registration:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=registration:nameDecorate:message
+REGISTRATION_PASSWORD id=registration:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=registration:passwordDecorate:message
+REGISTRATION_VERIFY id=registration:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=registration:verifyDecorate:message
+REGISTRATION_SUBMIT id=registration:register
+REGISTRATION_CANCEL id=registration:cancel
+REGISTRATION_REENTER_MESSAGE Re-enter your password
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/span/text()) \= "{0}"][normalize-space(td[1]/span/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/span/text()) \= "{0}"][normalize-space(td[1]/span/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check In Date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id\=searchCriteria\:Spinner\:connection-working
+FOOTER id=footer
+
+USE_ICEFACES_FORMS TRUE
+
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/icefaces/src/org/jboss/seam/example/icefaces/test/selenium/icefaces.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="itext.ftest.build" basedir="." default="build">
+ <property name="example.name" value="itext" />
+ <property name="jboss.example.ready.check.url" value="seam-itext/index.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,27 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Itext example" verbose="2" parallel="false">
+ <test name="itext_jboss">
+ <parameter name="CONTEXT_PATH" value="/seam-itext" />
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.itext.test.selenium.SeleniumItextTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/selenium/SeleniumItextTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/selenium/SeleniumItextTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/itext/src/org/jboss/seam/example/itext/test/selenium/SeleniumItextTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+package org.jboss.seam.example.itext.test.selenium;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class SeleniumItextTest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/index.seam";
+ public static final String HOME_PAGE_TITLE = "Seam PDF";
+
+ @BeforeMethod
+ @Override
+ public void setUp() {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ /**
+ * Place holder - just verifies that example deploys
+ */
+ @Test
+ public void homePageLoadTest() {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="jpa.ftest.build" basedir="." default="build">
+ <property name="example.name" value="jpa" />
+ <property name="jboss.deploy.target" value="jboss" />
+ <property name="jboss.undeploy.target" value="jboss.undeploy" />
+ <property name="jboss.example.ready.check.url" value="jboss-seam-jpa/home.seam" />
+ <property name="jboss-embedded.deploy.target" value="jboss-embedded" />
+ <property name="jboss-embedded.undeploy.target" value="jboss-embedded.undeploy" />
+ <property name="jboss-embedded.example.ready.check.url" value="jboss-seam-jpa/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,40 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="JPA example" verbose="2" parallel="false">
+ <test name="jpa_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/jpa/test/selenium/jpa.properties" />
+ <parameter name="CONTEXT_PATH" value="/jboss-seam-jpa" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/jpa.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/jpa.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/jpa.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE verify
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[@id\='setpassword\:Message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:Message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:Message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE verify
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id\=main\:SpinnerGif
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/jpa/src/org/jboss/seam/example/jpa/test/selenium/jpa.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="mail.ftest.build" basedir="." default="build">
+ <property name="example.name" value="mail" />
+ <property name="jboss.example.ready.check.url" value="seam-mail/index.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,27 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Mail example" verbose="2" parallel="false">
+ <test name="mail_jboss">
+ <parameter name="CONTEXT_PATH" value="/seam-mail" />
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.mail.test.selenium.SeleniumMailTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/mail/src/org/jboss/seam/example/mail/test/selenium/SeleniumMailTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,29 @@
+package org.jboss.seam.example.mail.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+
+public class SeleniumMailTest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/index.seam";
+ public static final String HOME_PAGE_TITLE = "Seam Mail";
+
+ @BeforeMethod
+ @Override
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ /**
+ * Place holder - just verifies that example deploys
+ */
+ @Test
+ public void homePageLoadTest()
+ {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="messages.ftest.build" basedir="." default="build">
+ <property name="example.name" value="messages" />
+ <property name="jboss.example.ready.check.url" value="seam-messages/messages.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,31 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Messages example" verbose="2" parallel="false">
+ <test name="messages_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <parameter name="CONTEXT_PATH" value="/seam-messages" />
+ <classes>
+ <class name="org.jboss.seam.example.messages.test.selenium.MessageTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/selenium/MessageTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/selenium/MessageTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/messages/src/org/jboss/seam/example/messages/test/selenium/MessageTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.messages.test.selenium;
+
+import java.text.MessageFormat;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * Test for messages example
+ * @author Jozef Hartinger
+ *
+ */
+public class MessageTest extends SeamSeleniumTest
+{
+
+ public static final String MESSAGES_URL = "/messages.seam";
+ public static final String MESSAGES_LINK = "messages:{0}:link";
+ public static final String MESSAGES_DELETE = "messages:{0}:delete";
+ public static final String MESSAGES_CHECKBOX = "messages:{0}:read";
+ public static final String MESSAGES_COUNT = "//table[@id='messages']/tbody/tr";
+ public static final String MESSAGE_TITLE = "title";
+ public static final String MESSAGE_TEXT = "text";
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + MESSAGES_URL);
+ }
+
+ @Test(dataProvider = "messages")
+ public void readMessageTest(int i, String title, String text)
+ {
+ browser.clickAndWait(MessageFormat.format(MESSAGES_LINK, i));
+ assertEquals("Unexpected message title displayed.", title, browser.getText(MESSAGE_TITLE));
+ assertEquals("Unexpected message text displayed.", text, browser.getText(MESSAGE_TEXT));
+ assertTrue("Checkbox should be checked after message is read.", browser.isChecked(MessageFormat.format(MESSAGES_CHECKBOX, i)));
+ }
+
+ @Test(dependsOnMethods = {"readMessageTest"}, dataProvider = "messages")
+ public void deleteMessageTest(int i, String title, String name)
+ {
+ int messageCount = browser.getXpathCount(MESSAGES_COUNT).intValue();
+ // delete first message in a table
+ browser.clickAndWait(MessageFormat.format(MESSAGES_DELETE, 0));
+ assertEquals("Unexpected count of messages.", --messageCount, browser.getXpathCount(MESSAGES_COUNT));
+ assertFalse("Message title still present.", browser.isTextPresent(title));
+ }
+
+ @DataProvider(name = "messages")
+ public Object[][] getMessages()
+ {
+ Object[][] messages = { { 0, "Greetings Earthling", "This is another example of a message." }, { 1, "Hello World", "This is an example of a message." } };
+ return messages;
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="nestedbooking.ftest.build" basedir="." default="build">
+ <property name="example.name" value="nestedbooking" />
+ <property name="jboss.example.ready.check.url" value="seam-nested-booking/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,36 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Nested booking example" verbose="2" parallel="false">
+ <test name="nestedbooking_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-nested-booking" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class name="org.jboss.seam.example.nestedbooking.test.selenium.NestedSimpleBookingTest"></class>
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/NestedSimpleBookingTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/NestedSimpleBookingTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/NestedSimpleBookingTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.nestedbooking.test.selenium;
+
+import java.text.MessageFormat;
+
+import org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest;
+
+/**
+ * This class alters behaviour of SimpleBookingTest to match nestedbooking example
+ *
+ * @author jharting
+ */
+public class NestedSimpleBookingTest extends SimpleBookingTest {
+
+ @Override
+ protected int bookHotel(String hotelName) {
+ return bookHotel(hotelName, 0, CREDIT_CARD, CREDIT_CARD_NAME);
+ }
+
+ protected int bookHotel(String hotelName, int room, String creditCard, String creditCardName) {
+ if (!isLoggedIn()) {
+ return -1;
+ }
+
+ if (!browser.isElementPresent(getProperty("SEARCH_SUBMIT"))) {
+ browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ enterSearchQuery(hotelName);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // hotel page
+ browser.click(getProperty("BOOKING_BOOK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // book page
+ browser.click(getProperty("BOOKING_SELECT_ROOM"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // room select page
+ browser.click(MessageFormat.format(getProperty("ROOM_LINK"), room));
+ browser.waitForPageToLoad(TIMEOUT);
+ // payment page
+ browser.type(getProperty("PAYMENT_CREDIT_CARD"), creditCard);
+ browser.type(getProperty("PAYMENT_CREDIT_CARD_NAME"), creditCardName);
+ browser.click(getProperty("PAYMENT_PROCEED"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // confirm page
+ browser.click(getProperty("CONFIRM_CONFIRM"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // main page
+ String message = browser.getText(getProperty("HOTEL_MESSAGE"));
+ if (message.matches(MessageFormat.format(
+ getProperty("BOOKING_CONFIRMATION_MESSAGE"), EXPECTED_NAME, hotelName))) {
+ String[] messageParts = message.split(" ");
+ int confirmationNumber = Integer.parseInt(messageParts[messageParts.length - 1]);
+ return confirmationNumber;
+ } else {
+ return -1;
+ }
+ }
+
+ @Override
+ protected void populateBookingFields() {}
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,87 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE Re-enter new password
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[@id='setpassword:PasswordDecorate:message' or @id='setpassword:VerifyDecorate:message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+BOOKING_SELECT_ROOM id=booking:room_preference
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:checkinDateDecorate:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:checkoutDateDecorate:message
+HOTEL_SMOKING id=booking:smokingDecorate:smoking:
+HOTEL_PROCEED id=booking:room_preference
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+ROOM_LINK id=room_selections_form:rooms:{0}:selectRoomPreference
+PAYMENT_CREDIT_CARD id=payment:creditCardDecorate:creditCard
+PAYMENT_CREDIT_CARD_NAME id=payment:creditCardNameDecorate:creditCardName
+PAYMENT_PROCEED id=payment:proceed
+CONFIRM_CONFIRM id=confirm:buttonDecorate:confirm
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE Re-enter your password
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id\=main\:SpinnerGif
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/nestedbooking/src/org/jboss/seam/example/nestedbooking/test/selenium/nestedbooking.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="numberguess.ftest.build" basedir="." default="build">
+ <property name="example.name" value="numberguess" />
+ <property name="jboss.example.ready.check.url" value="seam-numberguess/numberGuess.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,32 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Numberguess example" verbose="2" parallel="false">
+ <test name="numberguess_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/numberguess/test/selenium/numberguess.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-numberguess" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.numberguess.test.selenium.NumberGuessTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/NumberGuessTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/NumberGuessTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/NumberGuessTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.numberguess.test.selenium;
+
+import java.text.MessageFormat;
+import static org.testng.AssertJUnit.fail;
+import static org.testng.AssertJUnit.assertTrue;
+
+import org.jboss.seam.example.common.test.numberguess.selenium.CommonNumberGuessTest;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class NumberGuessTest extends CommonNumberGuessTest
+{
+
+ @Override
+ protected void enterGuess(int guess)
+ {
+ if (browser.isElementPresent(getProperty("GUESS_FIELD")))
+ {
+ // using input text field
+ super.enterGuess(guess);
+ }
+ else
+ {
+ if (browser.isElementPresent(getProperty("GUESS_MENU")))
+ {
+ // using menu
+ browser.select(getProperty("GUESS_MENU"), String.valueOf(guess));
+ }
+ else if (browser.isElementPresent(getProperty("GUESS_RADIO")))
+ {
+ // using radio buttons
+ int min = Integer.parseInt(browser.getText(getProperty("GUESS_MIN_VALUE")));
+ int radio = guess - min;
+ browser.check(MessageFormat.format(getProperty("GUESS_RADIO_ITEM"), radio));
+ } else {
+ fail("Unable to enter guess. No input found.");
+ }
+ browser.click(getProperty("GUESS_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ }
+
+ @Test
+ public void cheatingTest() {
+ int number;
+
+ browser.click(getProperty("CHEAT_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(getProperty("CHEAT_YES_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ number = Integer.parseInt(browser.getText(getProperty("CHEAT_NUMBER")));
+ browser.click(getProperty("CHEAT_DONE_BUTTON"));
+ browser.waitForPageToLoad(TIMEOUT);
+ enterGuess(number);
+ assertTrue("User should win when cheating. Random number was " + number, isOnWinPage());
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/numberguess.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/numberguess.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/numberguess/src/org/jboss/seam/example/numberguess/test/selenium/numberguess.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,36 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+MAIN_PAGE /numberGuess.seam
+GUESS_LOCATION numberGuess.seam
+WIN_LOCATION win.seam
+LOSE_LOCATION lose.seam
+GUESS_MAX_VALUE NumberGuessMain:Biggest
+GUESS_MIN_VALUE NumberGuessMain:Smallest
+GUESS_FIELD NumberGuessMain:inputGuess
+GUESS_MENU NumberGuessMain:selectGuessMenu
+GUESS_RADIO NumberGuessMain:selectGuessRadio
+GUESS_RADIO_ITEM NumberGuessMain:selectGuessRadio:{0}
+GUESS_SUBMIT NumberGuessMain:GuessButton
+CHEAT_BUTTON NumberGuessMain:CheatButton
+CHEAT_YES_BUTTON confirm:YesButton
+CHEAT_NUMBER cheat:RandomNumber
+CHEAT_DONE_BUTTON cheat\:DoneButton
\ No newline at end of file
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="quartz.ftest.build" basedir="." default="build">
+ <property name="example.name" value="quartz" />
+ <property name="jboss.example.ready.check.url" value="seam-quartz/search.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,31 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Quartz example" verbose="2" parallel="false">
+ <test name="quartz_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/quartz/test/selenium/quartz.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-quartz" />
+ <classes>
+ <class name="org.jboss.seam.example.quartz.test.selenium.QuartzPaymentTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/QuartzPaymentTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/QuartzPaymentTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/QuartzPaymentTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.quartz.test.selenium;
+
+import java.math.BigDecimal;
+import java.text.MessageFormat;
+import java.text.ParseException;
+
+import static org.testng.AssertJUnit.*;
+
+import org.jboss.seam.example.common.test.seampay.selenium.PaymentTest;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author jharting
+ *
+ */
+public class QuartzPaymentTest extends PaymentTest
+{
+
+ /**
+ * Submits new payment using CRON and verifies that the balance is subtracted
+ * correctly
+ *
+ * @throws ParseException
+ * @throws InterruptedException
+ */
+ @Test
+ public void testCRON() throws ParseException, InterruptedException
+ {
+ int account = 3;
+ BigDecimal amount = new BigDecimal(10);
+ String to = "foo";
+ String accountLinkLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_LINK"), account);
+ String accountBalanceLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_BALANCE"), account);
+ // send every 20 seconds
+ String cronExpression = "0/20 * * * * ?";
+
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ // submit new cron job
+ browser.type(getProperty("PAYMENT_TO_FIELD"), to);
+ browser.type(getProperty("PAYMENT_AMOUNT_FIELD"), amount.toString());
+ browser.type(getProperty("PAYMENT_CRON_FIELD"), cronExpression);
+ browser.click(getProperty("PAYMENT_CRON_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Scheduled payment not confirmed.", browser.isTextPresent(MessageFormat.format(getProperty("PAYMENT_CONFIRMATION_MESSAGE"), to)));
+ assertEquals("Invalid count of payments.", 1, browser.getXpathCount(getProperty("PAYMENTS_COUNT")));
+ // wait
+ Thread.sleep(5000);
+ // get balance
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal firstBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+ // wait 20 seconds
+ Thread.sleep(20000);
+ // get balance after 20 seconds
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal secondBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+ // wait 20 seconds
+ Thread.sleep(20000);
+ // get balance after 40 seconds
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal thirdBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+
+ BigDecimal expectedSecondBalance = firstBalance.subtract(amount);
+ BigDecimal expectedThirdBalance = firstBalance.subtract(amount).subtract(amount);
+ assertEquals("Incorrect balance after 20 seconds.", expectedSecondBalance, secondBalance);
+ assertEquals("Incorrect balance after 40 seconds.", expectedThirdBalance, thirdBalance);
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/quartz.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/quartz.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/quartz.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,34 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+MAIN_PAGE = /search.seam
+MAIN_PAGE_TITLE = Seam Pay
+ACCOUNT_TABLE_LINK = id=accountTable:{0}:link
+ACCOUNT_TABLE_BALANCE = id=accountTable:{0}:balance
+PAYMENT_TO_FIELD = id=accountView:paymentForm:payee
+PAYMENT_AMOUNT_FIELD = id=accountView:paymentForm:amount
+PAYMENT_CRON_FIELD = id=accountView:paymentForm:paymentCron
+PAYMENT_CRON_SUBMIT = id=accountView:paymentForm:cronSubmit
+PAYMENT_ONLY_ONCE_RADIO = id=accountView:paymentForm:radioList:0
+PAYMENT_EVERY_MINUTE_RADIO = id=accountView:paymentForm:radioList:1
+PAYMENT_SUBMIT = id=accountView:paymentForm:submit
+PAYMENT_CONFIRMATION_MESSAGE =Created a new payment to {0}
+PAYMENTS_COUNT =//table[@id\='payments']/tbody/tr
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/quartz/src/org/jboss/seam/example/quartz/test/selenium/quartz.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="registration.ftest.build" basedir="." default="build">
+ <property name="example.name" value="registration" />
+ <property name="jboss.example.ready.check.url" value="seam-registration/register.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,31 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Registration example" verbose="2" parallel="false">
+ <test name="registration_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <parameter name="CONTEXT_PATH" value="/seam-registration" />
+ <classes>
+ <class name="org.jboss.seam.example.registration.test.selenium.RegistrationTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/selenium/RegistrationTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/selenium/RegistrationTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/registration/src/org/jboss/seam/example/registration/test/selenium/RegistrationTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.registration.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * This class tests registration form functionality in registration example.
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class RegistrationTest extends SeamSeleniumTest
+{
+ protected static String REGISTRATION_URL = "/register.seam";
+ protected static String REGISTRATION_USERNAME = "registration:username";
+ protected static String REGISTRATION_NAME = "registration:name";
+ protected static String REGISTRATION_PASSWORD = "registration:password";
+ protected static String REGISTRATION_SUBMIT = "registration:register";
+ protected static String REGISTRATION_MESSAGE = "registration:messages";
+ protected static String REGISTRATION_MESSAGE_COUNT = "//ul[@id='registration:messages']/li";
+ protected static String REGISTERED_URL = "/registered.seam";
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + REGISTRATION_URL);
+ }
+
+ @Test
+ public void simpleRegistrationTest()
+ {
+ String username = "johny";
+ String name = "John Doe";
+ String password = "secretPassword";
+ submitRegistrationForm(username, name, password);
+ assertTrue("After-registration page expected.", browser.getLocation().contains(REGISTERED_URL));
+ assertTrue("Welcome message should contain username.", browser.isTextPresent(username));
+ assertTrue("Welcome message should contain name.", browser.isTextPresent(name));
+ }
+
+ @Test(dependsOnMethods = { "simpleRegistrationTest" })
+ public void duplicateUsernameTest()
+ {
+ String username = "jane";
+ String name = "Jane Doe";
+ String password = "secretPassword";
+ submitRegistrationForm(username, name, password);
+ browser.goBackAndWait();
+ submitRegistrationForm(username, name, password);
+ assertTrue("Registration page expected.", browser.getLocation().contains(REGISTRATION_URL));
+ assertTrue("Error message did not appear.", browser.isElementPresent(REGISTRATION_MESSAGE));
+ }
+
+ @Test
+ public void emptyValuesTest()
+ {
+ submitRegistrationForm("", "", "");
+ assertTrue("Registration page expected.", browser.getLocation().contains(REGISTRATION_URL));
+ assertEquals("Unexpected number of error messages.", 3, browser.getXpathCount(REGISTRATION_MESSAGE_COUNT));
+ }
+
+ protected void submitRegistrationForm(String username, String name, String password)
+ {
+ browser.type(REGISTRATION_USERNAME, username);
+ browser.type(REGISTRATION_NAME, name);
+ browser.type(REGISTRATION_PASSWORD, password);
+ browser.clickAndWait(REGISTRATION_SUBMIT);
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="chatroom.ftest.build" basedir="." default="build">
+ <property name="example.name" value="remoting/chatroom" />
+ <property name="jboss.example.ready.check.url" value="seam-chatroom/chatroom.seam" />
+
+ <import file="../../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,29 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Chatroom example" verbose="2" parallel="false">
+ <test name="chatroom_jboss">
+ <parameter name="CONTEXT_PATH" value="/seam-chatroom" />
+ <parameter name="PROPERTY_FILE"
+ value="" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.remoting.chatroom.test.selenium.SeleniumChatroomTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/selenium/SeleniumChatroomTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/selenium/SeleniumChatroomTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/test/selenium/SeleniumChatroomTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,25 @@
+package org.jboss.seam.example.remoting.chatroom.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+
+public class SeleniumChatroomTest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/chatroom.seam";
+ public static final String HOME_PAGE_TITLE = "Chat Room Example";
+
+ @BeforeMethod
+ @Override
+ public void setUp() {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ @Test // place holder - should be replaced by better tests as soon as JBSEAM-3944 is resolved
+ public void homePageLoadTest() {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="seambay.ftest.build" basedir="." default="build">
+ <property name="example.name" value="seambay" />
+ <property name="jboss.example.ready.check.url" value="seam-bay/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,34 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Seambay example" verbose="2" parallel="false">
+ <test name="seambay_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/seambay/test/selenium/seambay.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-bay" />
+ <classes>
+ <class name="org.jboss.seam.example.seambay.test.selenium.RegistrationTest" />
+ <class name="org.jboss.seam.example.seambay.test.selenium.SellTest" />
+ <class name="org.jboss.seam.example.seambay.test.selenium.SearchTest" />
+ <class name="org.jboss.seam.example.seambay.test.selenium.BidTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/BidTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/BidTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/BidTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,123 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seambay.test.selenium;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.fail;
+
+import org.jboss.seam.example.common.test.selenium.SeamSelenium;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class BidTest extends SeleniumSeamBayTest
+{
+ @Test(dependsOnGroups = { "searchTest"})
+ public void simpleBidTest()
+ {
+ String title = "Lost Tales Volume 1 by J.R.R. Tolkien";
+ String price = "10";
+ int bidCount;
+
+ login();
+ search(title);
+ browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK"));
+ browser.clickAndWait(getProperty("ITEM_BID_HISTORY"));
+ bidCount = browser.getXpathCount(getProperty("BID_HISTORY_COUNT")).intValue();
+ browser.goBackAndWait();
+ placeBid(price);
+ assertTrue("Auction page expected.", browser.getLocation().contains(getProperty("AUCTION_URL")));
+ browser.clickAndWait(getProperty("ITEM_BID_HISTORY"));
+ assertEquals("Unexpected count of bids.", ++bidCount, browser.getXpathCount(getProperty("BID_HISTORY_COUNT")));
+ }
+
+ @Test(dependsOnGroups = { "searchTest", "registrationTest" }, dependsOnMethods = { "simpleBidTest" })
+ public void complexBidTest()
+ {
+ String firstBidderName = "honestjoe";
+ String secondBidderName = "bidTester";
+ String title = "Nikon D80 Digital Camera";
+
+ SeamSelenium firstBrowser = browser;
+ SeamSelenium secondBrowser = startBrowser();
+ try
+ {
+ // register new user in first browser
+ browser.clickAndWait(getProperty("REGISTRATION"));
+ submitRegistrationForm(secondBidderName, "password", "password", "Slovakia");
+ assertTrue("Creating new user failed.", isLoggedIn());
+ // place a bid for a camera
+ search(title);
+ browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK"));
+ placeBid("2000");
+ // switch to second browser and place several bids
+ browser = secondBrowser;
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ login();
+ search(title);
+ browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK"));
+ for (int i = 1100; i < 2000; i += 200)
+ {
+ placeBid(String.valueOf(i));
+ assertTrue("'You have been outbid' page expected.", browser.isElementPresent(getProperty("BID_OUTBID")));
+ }
+ placeBid("2200");
+ assertFalse("Outbid unexpectedly", browser.isElementPresent(getProperty("BID_OUTBID")));
+ assertEquals("High bidder not recognized.", firstBidderName, browser.getText(getProperty("BID_HIGH_BIDDER")));
+ // switch to first browser again and place the highest bid again
+ browser = firstBrowser;
+ placeBid("2100");
+ assertTrue("'You have been outbid' page expected.", browser.isElementPresent(getProperty("BID_OUTBID")));
+ placeBid("2500");
+ assertEquals("High bidder not recognized.", secondBidderName, browser.getText(getProperty("BID_HIGH_BIDDER")));
+ }
+ finally
+ {
+ browser = firstBrowser;
+ secondBrowser.stop();
+ }
+ }
+
+ public void placeBid(String price)
+ {
+ if (browser.isElementPresent(getProperty("ITEM_NEW_BID_FIELD")))
+ {
+ browser.type(getProperty("ITEM_NEW_BID_FIELD"), price);
+ browser.clickAndWait(getProperty("ITEM_NEW_BID_SUBMIT"));
+ }
+ else if (browser.isElementPresent(getProperty("BID_INCREASE_FIELD")))
+ {
+ browser.type(getProperty("BID_INCREASE_FIELD"), price);
+ browser.clickAndWait(getProperty("BID_INCREASE_SUBMIT"));
+ }
+ else
+ {
+ fail("Unable to place a bid.");
+ }
+ browser.clickAndWait(getProperty("BID_CONFIRM"));
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/RegistrationTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/RegistrationTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/RegistrationTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seambay.test.selenium;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class RegistrationTest extends SeleniumSeamBayTest
+{
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ super.setUp();
+ browser.clickAndWait(getProperty("REGISTRATION"));
+ }
+
+ @Test(groups="registrationTest")
+ public void testRegistration() {
+ submitRegistrationForm("tester", "password", "password", "location");
+ assertTrue("Registration failed.", isLoggedIn());
+ }
+
+ /**
+ * This test verifies that application will not crash after submitting empty registration form
+ */
+ @Test
+ public void testEmptyRegistration() {
+ submitRegistrationForm("", "", "", "");
+ assertFalse("Registration resulted in debug page.", browser.getLocation().contains(getProperty("DEBUG_PAGE")));
+ }
+
+ @Test
+ public void testPasswordConfirmation() {
+ submitRegistrationForm("tester1", "password", "differentPassword", "location");
+ assertTrue("Registration page expected.",
+ browser.getLocation().contains(getProperty("REGISTRATION_PAGE")));
+ assertTrue("Error message not displayed.", browser.isElementPresent(getProperty("REGISTRATION_CONFIRM_MESSAGE")));
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SearchTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SearchTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SearchTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seambay.test.selenium;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class SearchTest extends SeleniumSeamBayTest
+{
+ @Test(groups={"searchTest"})
+ public void searchTest() {
+ String title = "Pontiac Firebird Trans Am T-top";
+ assertEquals("Unexpected number of search results.", 1, search(title));
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SeleniumSeamBayTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SeleniumSeamBayTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SeleniumSeamBayTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seambay.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.fail;
+
+/**
+ * Main class for SeamBay example tests
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class SeleniumSeamBayTest extends SeamSeleniumTest
+{
+
+ protected String defaultLogin = "demo";
+ protected String defaultPassword = "demo";
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ public void login(String username, String password)
+ {
+ if (isLoggedIn())
+ {
+ fail("User already logged in.");
+ }
+ browser.clickAndWait(getProperty("LOGIN"));
+ submitLoginForm(username, password);
+ }
+
+ public void login()
+ {
+ login(defaultLogin, defaultPassword);
+ }
+
+ public boolean isLoggedIn()
+ {
+ return browser.isElementPresent(getProperty("LOGOUT"));
+ }
+
+ public void submitRegistrationForm(String username, String password, String verify, String location)
+ {
+ assertTrue("Registration page expected.", browser.getLocation().contains(getProperty("REGISTRATION_URL")));
+ browser.type(getProperty("REGISTRATION_USERNAME"), username);
+ browser.type(getProperty("REGISTRATION_PASSWORD"), password);
+ browser.type(getProperty("REGISTRATION_VERIFY"), verify);
+ browser.type(getProperty("REGISTRATION_LOCATION"), location);
+ browser.clickAndWait(getProperty("REGISTRATION_SUBMIT"));
+ }
+
+ public void submitLoginForm(String username, String password)
+ {
+ browser.type(getProperty("LOGIN_USERNAME"), username);
+ browser.type(getProperty("LOGIN_PASSWORD"), password);
+ browser.clickAndWait(getProperty("LOGIN_SUBMIT"));
+ }
+
+ public int search(String keyword)
+ {
+ browser.type(getProperty("SEARCH_FIELD"), keyword);
+ browser.clickAndWait(getProperty("SEARCH_SUBMIT"));
+ return browser.getXpathCount(getProperty("SEARCH_RESULTS_COUNT")).intValue();
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SellTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SellTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/SellTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,122 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seambay.test.selenium;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+
+import org.testng.annotations.Test;
+
+import com.thoughtworks.selenium.Wait;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class SellTest extends SeleniumSeamBayTest
+{
+ @Test(dependsOnGroups={"searchTest"})
+ public void joystickSellingTest()
+ {
+ String title = "Saitek X52 Pro Flight System";
+ int category = 7;
+ int subcategory = 3;
+ String duration = "7";
+ String price = "100";
+ String description = "The most fully integrated Stick and throttle flight controller: built to meet the demands of the best virtual pilots in the world!";
+
+ sellItem(title, category, subcategory, duration, price, description);
+ }
+
+ protected void sellItem(String title, int category, int subcategory, String duration, String price, String description)
+ {
+ login();
+ browser.clickAndWait(getProperty("SELL"));
+ submitSell1Page(title);
+ submitSell2Page(category, subcategory);
+ submitSell3Page(duration, price);
+ submitSell4Page();
+ submitSell5Page(description);
+ validatePreview(price, description);
+ browser.clickAndWait(getProperty("SELL_CONFIRM"));
+ assertTrue("Navigation failure, home page expected", browser.getLocation().contains(getProperty("HOME_PAGE")));
+ assertEquals("Unexpected number of search results.", 1, search(title));
+ }
+
+ protected void submitSell1Page(String title) {
+ assertTrue("Navigation failure, sell1 page expected", browser.getLocation().contains(getProperty("SELL_1_URL")));
+ browser.type(getProperty("SELL_TITLE"), title);
+ browser.clickAndWait(getProperty("SELL_NEXT"));
+ }
+
+ protected void submitSell2Page(int category, int subcategory) {
+ assertTrue("Navigation failure, sell2 page expected", browser.getLocation().contains(getProperty("SELL_2_URL")));
+ new Wait()
+ {
+ @Override
+ public boolean until()
+ {
+ return browser.isElementPresent(getProperty("SELL_CATEGORY_SELECT"));
+ }
+ };
+ browser.select(getProperty("SELL_CATEGORY_SELECT"), "index=" + category);
+ if (subcategory != 0)
+ {
+ new Wait()
+ {
+ @Override
+ public boolean until()
+ {
+ return browser.isElementPresent(getProperty("SELL_SUBCATEGORY_SELECT"));
+ }
+ };
+ browser.select(getProperty("SELL_SUBCATEGORY_SELECT"), "index=" + subcategory);
+ }
+ browser.clickAndWait(getProperty("SELL_NEXT"));
+ }
+
+ protected void submitSell3Page(String duration, String price) {
+ assertTrue("Navigation failure, sell3 page expected", browser.getLocation().contains(getProperty("SELL_3_URL")));
+ browser.type(getProperty("SELL_DURATION"), duration);
+ browser.type(getProperty("SELL_PRICE"), price);
+ browser.clickAndWait(getProperty("SELL_NEXT"));
+ }
+
+ protected void submitSell4Page() {
+ assertTrue("Navigation failure, sell4 page expected", browser.getLocation().contains(getProperty("SELL_4_URL")));
+ browser.clickAndWait(getProperty("SELL_NEXT"));
+ }
+
+ protected void submitSell5Page(String description) {
+ assertTrue("Navigation failure, sell5 page expected", browser.getLocation().contains(getProperty("SELL_5_URL")));
+ browser.type(getProperty("SELL_DESCRIPTION"), description);
+ browser.clickAndWait(getProperty("SELL_NEXT"));
+ }
+
+ protected void validatePreview(String price, String description)
+ {
+ assertTrue("Must be on preview page to validate preview.", browser.getLocation().contains(getProperty("SELL_PREVIEW_URL")));
+ assertEquals("Unexpected price on preview page.", Double.valueOf(price), Double.valueOf(browser.getText(getProperty("SELL_PREVIEW_PRICE"))));
+ assertEquals("Unexpected description on description page.", description, browser.getText(getProperty("SELL_PREVIEW_DESCRIPTION")));
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/seambay.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/seambay.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seambay/src/org/jboss/seam/example/seambay/test/selenium/seambay.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,55 @@
+HOME_PAGE /home.seam
+DEBUG_PAGE debug.seam
+REGISTRATION_PAGE register.seam
+LOGIN id=login
+LOGOUT id=logout
+REGISTRATION id=register
+SELL id=sell
+LOGIN_URL login.seam
+LOGIN_USERNAME id=login:username
+LOGIN_PASSWORD id=login:password
+LOGIN_SUBMIT id=login:submit
+REGISTRATION_USERNAME id=registration:username
+REGISTRATION_PASSWORD id=registration:password
+REGISTRATION_VERIFY id=registration:confirm
+REGISTRATION_LOCATION id=registration:location
+REGISTRATION_SUBMIT id=registration:submit
+REGISTRATION_CONFIRM_MESSAGE id=registration:confirmMessage
+SELL_LINK id=sell
+REGISTRATION_URL register.seam
+ITEMDETAIL_URL itemdetail
+AUCTION_URL auction.seam
+SELL_1_URL sell.seam
+SELL_2_URL sell2.seam
+SELL_3_URL sell3.seam
+SELL_4_URL sell4.seam
+SELL_5_URL sell5.seam
+SELL_PREVIEW_URL preview.seam
+SELL_PREVIEW_PRICE id=price
+SELL_PREVIEW_DESCRIPTION id=description
+SELL_TITLE id=sellForm:title
+SELL_DURATION id=sellForm:duration
+SELL_PRICE id=sellForm:price
+SELL_DESCRIPTION id=sellForm:description
+SELL_NEXT id=sellForm:next
+SELL_CONFIRM id=sellForm:confirm
+SELL_CATEGORY_SELECT id=rootCategory
+SELL_SUBCATEGORY_SELECT id\=tier2
+
+SEARCH_FIELD id=search:searchTerm
+SEARCH_SUBMIT id=search:submit
+SEARCH_RESULTS_COUNT //table[@id='auctions']/tbody/tr
+SEARCH_RESULTS_FIRST_ROW_LINK //table[@id='auctions']/tbody/tr[1]/td[2]/a
+
+ITEM_NEW_BID_FIELD id=newBid:bidAmount
+ITEM_NEW_BID_SUBMIT id=newBid:placeBidWithAmount
+ITEM_NEW_BID_LINK id=bid:placeBid
+ITEM_BID_HISTORY id=bidHistory
+BID_INCREASE_FIELD id=increaseBid:bidAmount
+BID_INCREASE_SUBMIT id=increaseBid:bidAgain
+
+BID_CONFIRM id=confirm:confirmBid
+BID_HISTORY_COUNT //table[@id='history']/tbody/tr
+BID_OUTBID id=outbid
+BID_HIGH_BIDDER id\=highBidder
+BID_HISTORY_BACK id\=back
\ No newline at end of file
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="seampay.ftest.build" basedir="." default="build">
+ <property name="example.name" value="seampay" />
+ <property name="jboss.example.ready.check.url" value="seam-pay/search.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,31 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Seampay example" verbose="2" parallel="false">
+ <test name="seampay_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/seampay/test/selenium/seampay.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-pay" />
+ <classes>
+ <class name="org.jboss.seam.example.common.test.seampay.selenium.PaymentTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/seampay.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/seampay.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/seampay.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,32 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+MAIN_PAGE = /search.seam
+MAIN_PAGE_TITLE = Seam Pay
+ACCOUNT_TABLE_LINK = id=accountTable:{0}:link
+ACCOUNT_TABLE_BALANCE = id=accountTable:{0}:balance
+PAYMENT_TO_FIELD = id=accountView:paymentForm:payee
+PAYMENT_AMOUNT_FIELD = id=accountView:paymentForm:amount
+PAYMENT_ONLY_ONCE_RADIO = id=accountView:paymentForm:radioList:0
+PAYMENT_EVERY_MINUTE_RADIO = id=accountView:paymentForm:radioList:1
+PAYMENT_SUBMIT = id=accountView:paymentForm:submit
+PAYMENT_CONFIRMATION_MESSAGE = Created a new payment to {0}
+PAYMENTS_COUNT =//table[@id\='payments']/tbody/tr
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seampay/src/org/jboss/seam/example/seampay/test/selenium/seampay.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="seamspace.ftest.build" basedir="." default="build">
+ <property name="example.name" value="seamspace" />
+ <property name="jboss.example.ready.check.url" value="seam-space/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,33 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Seamspace example" verbose="2" parallel="false">
+ <test name="seamspace_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <parameter name="CONTEXT_PATH" value="/seam-space" />
+ <classes>
+ <class name="org.jboss.seam.example.seamspace.test.selenium.LoginTest" />
+<!-- <class name="org.jboss.seam.example.seamspace.test.selenium.UserTest" />-->
+<!-- <class name="org.jboss.seam.example.seamspace.test.selenium.BlogTest" />-->
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/LoginTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/LoginTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/LoginTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seamspace.test.selenium;
+
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import org.testng.annotations.Test;
+
+/**
+ * Basic test covering user authentication
+ * @author Jozef Hartinger
+ *
+ */
+public class LoginTest extends SeleniumSeamSpaceTest
+{
+
+ @Test(groups = {"loginTest"})
+ public void loginTest() {
+ assertTrue("Login failed.", isLoggedIn());
+ }
+
+ @Test(dependsOnMethods = {"loginTest"})
+ public void logoutTest() {
+ browser.clickAndWait(LOGOUT);
+ assertFalse("Logout failed.", isLoggedIn());
+ }
+
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/SeleniumSeamSpaceTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/SeleniumSeamSpaceTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/SeleniumSeamSpaceTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,106 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seamspace.test.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import static org.testng.AssertJUnit.fail;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public abstract class SeleniumSeamSpaceTest extends SeamSeleniumTest
+{
+
+ public static final String LOGIN = "id=login";
+ public static final String LOGOUT = "id=logout";
+ public static final String LOGIN_USERNAME = "id=loginForm:name";
+ public static final String LOGIN_PASSWORD = "id=loginForm:password";
+ public static final String LOGIN_LOGIN = "id=loginForm:login";
+ public static final String HOME_URL = "/home.seam";
+ public static final String SECURITY = "id=security";
+
+ public static final String MANAGE_USERS = "id=manageUsers";
+ public static final String CREATE_USER_BUTTON = "id=newUser";
+ public static final String USER_FIRSTNAME = "id=user:firstname";
+ public static final String USER_LASTNAME = "id=user:lastname";
+ public static final String USER_NAME = "id=user:username";
+ public static final String USER_PASSWORD = "id=user:password";
+ public static final String USER_CONFIRM = "id=user:confirm";
+ public static final String USER_ROLES = "id=user:roles";
+ public static final String USER_ROLE_BY_NAME_CHECKBOX = "xpath=//input[contains(@id, \"user:roles:\")][normalize-space(../label/text()) = \"{0}\"]";
+ public static final String USER_ENABLED = "id=user:enabled";
+ public static final String USER_SAVE = "id=user:save";
+ public static final String USER_CANCEL = "id=user:cancel";
+ public static final String USER_TABLE_ROW_BY_NAME = "xpath=//table[@id=\"threads\"]/tbody/tr[normalize-space(./td[1]/text()) = \"{0}\"]";
+ // these locators can only be used catenated with USER_TABLE_ROW_BY_NAME
+ public static final String USER_TABLE_ROLES = "/td[2]/text()";
+ public static final String USER_TABLE_CHECKBOX_CHECKED = "/td[3]/div[@class=\"checkmark\"]";
+ public static final String USER_TABLE_CHECKBOX_UNCHECKED = "/td[3]/div[@class=\"cross\"]";
+ public static final String USER_TABLE_DELETE = "//a[contains(@id, \"delete\")]";
+ public static final String USER_TABLE_EDIT = "//a[contains(@id, \"edit\")]";
+
+ public static final String MANAGE_ROLES = "id=manageRoles";
+ public static final String CREATE_ROLE_BUTTON = "id=newRole";
+ public static final String ROLE_NAME = "id=role:name";
+ public static final String ROLE_ROLES = "id=role:roles";
+ public static final String ROLE_MEMBER_OF_BY_NAME_CHECKBOX = "xpath=//input[contains(@id, \"role:roles:\")][normalize-space(../label/text()) = \"{0}\"]";
+ public static final String ROLE_SAVE = "id=role:save";
+ public static final String ROLE_CANCEL = "id=role:cancel";
+ public static final String ROLE_TABLE_ROW_BY_NAME = "xpath=//table[@id=\"threads\"]/tbody/tr[normalize-space(./td[1]/text()) = \"{0}\"]";
+ // these locators can only be used catenated with ROLE_TABLE_ROW_BY_NAME
+ public static final String ROLE_TABLE_ROLES = "/td[2]/text()";
+ public static final String ROLE_TABLE_DELETE = "//a[contains(@id, \"delete\")]";
+ public static final String ROLE_TABLE_EDIT = "//a[contains(@id, \"edit\")]";
+
+ public static final String DEFAULT_USERNAME = "demo";
+ public static final String DEFAULT_PASSWORD = "demo";
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_URL);
+ login();
+ }
+
+ public void login() {
+ login(DEFAULT_USERNAME, DEFAULT_PASSWORD);
+ }
+
+ public void login(String username, String password) {
+ if (isLoggedIn()) {
+ fail("User already logged in.");
+ }
+ browser.clickAndWait(LOGIN);
+ browser.type(LOGIN_USERNAME, username);
+ browser.type(LOGIN_PASSWORD, password);
+ browser.clickAndWait(LOGIN_LOGIN);
+ }
+
+ protected boolean isLoggedIn()
+ {
+ return !browser.isElementPresent(LOGIN) && browser.isElementPresent(LOGOUT);
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/UserTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/UserTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/seamspace/src/org/jboss/seam/example/seamspace/test/selenium/UserTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.seamspace.test.selenium;
+
+import java.text.MessageFormat;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+
+/**
+ * This class tests user management in SeamSpace application
+ * @author Jozef Hartinger
+ *
+ */
+public class UserTest extends SeleniumSeamSpaceTest
+{
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.clickAndWait(SECURITY);
+ browser.clickAndWait(MANAGE_USERS);
+ }
+
+ @Test(dependsOnGroups = {"loginTest"})
+ public void userCreatingTest()
+ {
+ String username = "jharting";
+ String password = "topSecret";
+ String[] roles = {"admin", "user"};
+ createNewUser("Jozef", "Hartinger", username, password, password, roles, true);
+ String userRow = MessageFormat.format(USER_TABLE_ROW_BY_NAME, username);
+ // check user list
+ assertTrue("User not found in userlist.", browser.isElementPresent(userRow));
+ assertTrue("User not in admin role.", browser.getText(userRow + USER_TABLE_ROLES).contains("admin"));
+ assertTrue("User not in user role.", browser.getText(userRow + USER_TABLE_ROLES).contains("user"));
+ assertTrue("User not enabled.", browser.isElementPresent(userRow + USER_TABLE_CHECKBOX_CHECKED));
+ // check new user can login
+ browser.clickAndWait(LOGOUT);
+ login(username, password);
+ assertTrue("Unable to login with new user's credentials.", isLoggedIn());
+ }
+
+ @Test(dependsOnGroups = {"loginTest"})
+ public void userEditingTest() {
+ String username = "shadowman";
+ String password = "password";
+ String[] roles = {"admin", "user"};
+ String userRow = MessageFormat.format(USER_TABLE_ROW_BY_NAME, username);
+ browser.clickAndWait(userRow + USER_TABLE_EDIT);
+ fillUpdatableUserDetails(password, password, roles, true);
+ browser.clickAndWait(USER_SAVE);
+ assertTrue("User not in admin role.", browser.getText(userRow + USER_TABLE_ROLES).contains("admin"));
+ assertTrue("User not in user role.", browser.getText(userRow + USER_TABLE_ROLES).contains("user"));
+ browser.clickAndWait(LOGOUT);
+ login(username, password);
+ assertTrue("Unable to login with changed password", isLoggedIn());
+ }
+
+ @Test(dependsOnGroups = {"loginTest"})
+ public void userDeletingTest() {
+ String username = "mona";
+ String userRow = MessageFormat.format(USER_TABLE_ROW_BY_NAME, username);
+ assertTrue("User " + username + " not in user list.", browser.isElementPresent(userRow));
+ browser.chooseOkOnNextConfirmation();
+ browser.click(userRow + USER_TABLE_DELETE);
+ browser.getConfirmation();
+ browser.waitForPageToLoad(TIMEOUT);
+ assertFalse("User " + username + " exists after deletion", browser.isElementPresent(userRow));
+ }
+
+ @Test(dependsOnGroups = {"loginTest"})
+ public void cancelledUserDeletingTest() throws InterruptedException {
+ String username = "demo";
+ String userRow = MessageFormat.format(USER_TABLE_ROW_BY_NAME, username);
+ assertTrue("User " + username + " not in user list.", browser.isElementPresent(userRow));
+ browser.chooseCancelOnNextConfirmation();
+ browser.click(userRow + USER_TABLE_DELETE);
+ browser.getConfirmation();
+ browser.refreshAndWait();
+ assertTrue("User " + username + " missing in user list after cancelled deletion.", browser.isElementPresent(userRow));
+ }
+
+ @Test(dependsOnGroups = {"loginTest"}, dependsOnMethods={"userCreatingTest"})
+ public void disablingUserAccountTest() {
+ String username = "johny";
+ String password = "password";
+ String userRow = MessageFormat.format(USER_TABLE_ROW_BY_NAME, username);
+ createNewUser("John", "Doe", username, password, password, new String[]{"user"}, false);
+ assertTrue("User not found in userlist.", browser.isElementPresent(userRow));
+ assertTrue("User account enabled.", browser.isElementPresent(userRow + USER_TABLE_CHECKBOX_UNCHECKED));
+ browser.clickAndWait(LOGOUT);
+ login(username, password);
+ assertFalse("User logged in despite his account was disabled.", isLoggedIn());
+ }
+
+ private void createNewUser(String firstName, String lastName, String username, String password, String confirm, String[] roles, boolean enabled) {
+ browser.clickAndWait(CREATE_USER_BUTTON);
+ fillNewUserDetails(firstName, lastName, username, password, confirm, roles, enabled);
+ browser.clickAndWait(USER_SAVE);
+ }
+
+ private void fillNewUserDetails(String firstName, String lastName, String username, String password, String confirm, String[] roles, boolean enabled)
+ {
+ browser.type(USER_FIRSTNAME, firstName);
+ browser.type(USER_LASTNAME, lastName);
+ browser.type(USER_NAME, username);
+ fillUpdatableUserDetails(password, confirm, roles, enabled);
+ }
+
+ private void fillUpdatableUserDetails(String password, String confirm, String[] roles, boolean enabled) {
+ browser.type(USER_PASSWORD, password);
+ browser.type(USER_CONFIRM, confirm);
+ for (String role : roles) {
+ assertTrue("Unable to add user to role: " + role, browser.isElementPresent(MessageFormat.format(USER_ROLE_BY_NAME_CHECKBOX, role)));
+ browser.check(MessageFormat.format(USER_ROLE_BY_NAME_CHECKBOX, role));
+ }
+ if (enabled)
+ {
+ browser.check(USER_ENABLED);
+ }
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="spring.ftest.build" basedir="." default="build">
+ <property name="example.name" value="spring" />
+ <property name="jboss.deploy.target" value="jbosswar" />
+ <property name="jboss.undeploy.target" value="jbosswar.undeploy" />
+ <property name="jboss.example.ready.check.url" value="jboss-seam-spring/home.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,35 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Spring example" verbose="2" parallel="false">
+ <test name="spring_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/spring/test/selenium/spring.properties" />
+ <parameter name="CONTEXT_PATH" value="/jboss-seam-spring" />
+ <classes>
+ <class name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class name="org.jboss.seam.example.spring.test.selenium.SpringChangePasswordTest" />
+ <class name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
\ No newline at end of file
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/SpringChangePasswordTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/SpringChangePasswordTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/SpringChangePasswordTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,108 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.spring.test.selenium;
+
+import org.jboss.seam.example.common.test.booking.selenium.SeleniumBookingTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ * This class tests change password funcionality.
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class SpringChangePasswordTest extends SeleniumBookingTest {
+
+ private final static String LONG_TEXT = "testertestertest";
+ private final static String SHORT_TEXT = "tt";
+ // overriding default values
+ private final String USERNAME = "gavin";
+ private final String PASSWORD = "foobar";
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ login(USERNAME, PASSWORD);
+ }
+
+ /**
+ * Verifies that changing password works well. If clean-up part of this
+ * method fails it may affect other methods.
+ */
+ @Test
+ public void changePasswordTest() {
+ String newPassword = "password";
+ changePassword(newPassword, PASSWORD);
+ assertTrue("Password change failed.", browser
+ .isTextPresent(getProperty("PASSWORD_UPDATED_MESSAGE")));
+ logout();
+ assertTrue("Login failed.", login(USERNAME, newPassword));
+ // cleanup - set default password
+ changePassword(PASSWORD, newPassword);
+ assertTrue("Password change failed.", browser
+ .isTextPresent(getProperty("PASSWORD_UPDATED_MESSAGE")));
+ logout();
+ assertTrue("Login failed.", login(USERNAME, PASSWORD));
+ }
+
+ @Test
+ public void usingIncorrectOldPasswordTest() {
+ changePassword("password", "foobar1");
+ assertTrue("Password verification failed", browser
+ .isTextPresent(getProperty("PASSWORD_REENTER_MESSAGE")));
+ }
+
+ @Test
+ public void usingEmptyPasswordsTest() {
+ changePassword("", "");
+ assertEquals("Password verification failed", 2, browser
+ .getXpathCount(getProperty("PASSWORD_VALUE_REQUIRED_MESSAGE")));
+ }
+
+ @Test
+ public void usingLongPasswordTest() {
+ changePassword(LONG_TEXT, LONG_TEXT);
+ assertTrue("Password verification failed", browser
+ .isTextPresent(getProperty("PASSWORD_LENGTH_MESSAGE")));
+ }
+
+ @Test
+ public void usingShortPasswordTest() {
+ changePassword(SHORT_TEXT, SHORT_TEXT);
+ assertTrue("Password verification failed", browser
+ .isTextPresent(getProperty("PASSWORD_LENGTH_MESSAGE")));
+ }
+
+ public void changePassword(String newPassword, String oldpassword) {
+ browser.click(getProperty("SETTINGS"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("PASSWORD_PASSWORD"), newPassword);
+ browser.type(getProperty("PASSWORD_VERIFY"), oldpassword);
+ browser.click(getProperty("PASSWORD_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/spring.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/spring.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/spring.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,86 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE verify
+PASSWORD_VALUE_REQUIRED_MESSAGE //*[@id\='setpassword\:Message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:Messages
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:Messages
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE verify
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id\='ConversationListForm\:ConversationListDataTable']/tbody/tr
+SPINNER id=main:Spinner
+# ajax not present in spring example - false required
+USE_AJAX_SEARCH FALSE
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/spring/src/org/jboss/seam/example/spring/test/selenium/spring.properties
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="todo.ftest.build" basedir="." default="build">
+ <property name="example.name" value="todo" />
+ <property name="jboss.example.ready.check.url" value="seam-todo/login.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,31 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Todo example" verbose="2" parallel="false">
+ <test name="todo_jboss">
+ <parameter name="PROPERTY_FILE" value="" />
+ <parameter name="CONTEXT_PATH" value="/seam-todo" />
+ <classes>
+ <class name="org.jboss.seam.example.todo.test.selenium.SeleniumTodoTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/selenium/SeleniumTodoTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/selenium/SeleniumTodoTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/todo/src/org/jboss/seam/example/todo/test/selenium/SeleniumTodoTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.todo.test.selenium;
+
+import java.text.MessageFormat;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertEquals;
+
+/**
+ * This is a base class for todo example selenium tests
+ * @author Jozef Hartinger
+ *
+ */
+public class SeleniumTodoTest extends SeamSeleniumTest
+{
+
+ public static final String LOGIN_URL = "/login.seam";
+ public static final String TODO_URL = "/todo.seam";
+ public static final String LOGIN_USERNAME = "id=login:username";
+ public static final String LOGIN_SUBMIT = "id=login:submit";
+ public static final String NEW_ITEM_DESCRIPTION = "id=new:description";
+ public static final String NEW_ITEM_CREATE = "id=new:create";
+
+ public static final String NO_ITEMS_FOUND = "id=list:noItems";
+ public static final String FIRST_ITEM_DESCRIPTION = "id=list:items:0:description";
+ public static final String FIRST_ITEM_PRIORITY = "id=list:items:0:priority";
+ public static final String FIRST_ITEM_DONE = "id=list:items:0:done";
+ public static final String NTH_ITEM_DESCRIPTION = "id=list:items:{0}:description";
+ public static final String NTH_ITEM_PRIORITY = "id=list:items:{0}:priority";
+ public static final String NTH_ITEM_DONE = "id=list:items:{0}:done";
+ public static final String ITEMS_COUNT = "//table[@id=\"list:items\"]/tbody/tr";
+ public static final String ITEMS_UPDATE = "list:update";
+
+
+ public static final String DEFAULT_USERNAME = "tester";
+
+ @BeforeClass
+ public void prepareTestFixture() {
+ String[] fixture = {"selenium test for todo example", "buy milk", "clean the bathroom"};
+ setUp();
+ assertTrue("Item list should be empty", browser.isElementPresent(NO_ITEMS_FOUND));
+ for (String item : fixture) {
+ browser.type(NEW_ITEM_DESCRIPTION, item);
+ browser.clickAndWait(NEW_ITEM_CREATE);
+ }
+ assertEquals("Unexpected count of items.", fixture.length, browser.getXpathCount(ITEMS_COUNT));
+ super.tearDown();
+ }
+
+ @BeforeMethod
+ @Override
+ public void setUp() {
+ super.setUp();
+ browser.open(CONTEXT_PATH + LOGIN_URL);
+ browser.type(LOGIN_USERNAME, DEFAULT_USERNAME);
+ browser.clickAndWait(LOGIN_SUBMIT);
+ assertTrue("Navigation failure. Todo page expected.", browser.getLocation().contains(TODO_URL));
+ }
+
+ @Test
+ public void getEntryDoneTest() {
+ String description = browser.getValue(FIRST_ITEM_DESCRIPTION);
+ int itemCount = browser.getXpathCount(ITEMS_COUNT).intValue();
+ browser.clickAndWait(FIRST_ITEM_DONE);
+ assertFalse("Item should disappear from item list when done.", browser.isTextPresent(description));
+ assertEquals("Unexpected count of items.", --itemCount, browser.getXpathCount(ITEMS_COUNT));
+ }
+
+ /**
+ * This test sets high priority to first item and verifies that the item is be moved to the bottom and the priority number is kept.
+ */
+ @Test
+ public void priorityTest() {
+ String description = browser.getValue(FIRST_ITEM_DESCRIPTION);
+ String priority = "10";
+ int itemCount = browser.getXpathCount(ITEMS_COUNT).intValue();
+ int lastItemRowId = itemCount - 1;
+ browser.type(FIRST_ITEM_PRIORITY, priority);
+ browser.clickAndWait(ITEMS_UPDATE);
+ assertEquals("Message should move to the end of item list after priority change.", description, browser.getValue(MessageFormat.format(NTH_ITEM_DESCRIPTION, lastItemRowId)));
+ assertEquals("Unexpected priority.", priority, browser.getValue(MessageFormat.format(NTH_ITEM_PRIORITY, lastItemRowId)));
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/build.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/build.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/build.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="ui.ftest.build" basedir="." default="build">
+ <property name="example.name" value="ui" />
+ <property name="jboss.example.ready.check.url" value="seam-ui/index.seam" />
+
+ <import file="../build.xml" />
+</project>
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/jboss.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/jboss.xml (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/jboss.xml 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,27 @@
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="UI example" verbose="2" parallel="false">
+ <test name="ui_jboss">
+ <parameter name="CONTEXT_PATH" value="/seam-ui" />
+ <parameter name="PROPERTY_FILE" value="" />
+ <classes>
+ <class name="org.jboss.seam.example.ui.test.selenium.SeleniumUITest" />
+ </classes>
+ </test>
+</suite>
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/selenium/SeleniumUITest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/selenium/SeleniumUITest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/examples/ui/src/org/jboss/seam/example/ui/test/selenium/SeleniumUITest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,30 @@
+package org.jboss.seam.example.ui.test.selenium;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class SeleniumUITest extends SeamSeleniumTest
+{
+ public static final String HOME_PAGE = "/index.seam";
+ public static final String HOME_PAGE_TITLE = "UI Example:";
+
+ @BeforeMethod
+ @Override
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + HOME_PAGE);
+ }
+
+ /**
+ * Place holder - just verifies that example deploys
+ */
+ @Test
+ public void homePageLoadTest()
+ {
+ assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
+ }
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/ftest.properties
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/ftest.properties (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/ftest.properties 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,50 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+
+#Build properties for running and executing functional tests
+
+# Selenium testng specific
+selenium.server.port=14444
+selenium.host=localhost
+selenium.browser=*firefox
+selenium.browser.port=8080
+selenium.browser.url=http://127.0.0.1:8080
+selenium.speed=0
+selenium.timeout=30000
+
+# enter any commands wanted for the testng run
+selenium.testng.jvmargs=-Dfoo
+
+# enter any commands wanted for the selenium server
+# -log selenium.server.log will create a debug log
+selenium.server.cmd.args=
+
+# default deploy and undeploy targets
+# these values can be overriden in local build.xml file for specific example
+jboss.deploy.target=deploy
+jboss.undeploy.target=undeploy
+# default wait times
+jboss.deploy.waittime=120
+# default wait urls
+jboss.example.ready.check.url=seam-${example.name}/
+
+
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-java-client-driver.jar
===================================================================
(Binary files differ)
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-java-client-driver.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-server-standalone.jar
===================================================================
(Binary files differ)
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/selenium-server-standalone.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/testng-5.8-jdk15.jar
===================================================================
(Binary files differ)
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/lib/testng-5.8-jdk15.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/AjaxTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/AjaxTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/AjaxTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import org.testng.annotations.Test;
+/**
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class AjaxTest extends SeleniumBookingTest {
+
+ @Test
+ public void ajaxSearchFloodTest() {
+ String[] hotels = new String[] { "Marriott Courtyard", "Conrad Miami",
+ "Marriot Downtown", "Ritz Carlton", "NonExistingHotel" };
+ for (int i = 0; i < 30; i++) {
+ for (String hotel : hotels) {
+
+ browser.type(getProperty("SEARCH_STRING_FIELD"), "");
+ enterSearchQuery(hotel);
+ }
+ }
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/AjaxTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/BackButtonTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/BackButtonTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/BackButtonTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,102 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ * This tests verifies that the example can cleanly handle backbuttoning in
+ * various situations
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class BackButtonTest extends SeleniumBookingTest {
+
+ String hotelName = "Mar";
+
+ /**
+ * Tries whether backbuttoning after logout is cleanly handled.
+ */
+ @Test
+ public void backbuttoningAfterLogoutTest() {
+ enterSearchQuery(hotelName);
+ logout();
+ // goBack() does not work with konqueror
+ browser.goBack();
+ browser.waitForPageToLoad(TIMEOUT);
+ if (isLoggedIn()) {
+ browser.click(getProperty("SETTINGS"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Backbuttoning failed.", getProperty("PAGE_TITLE"),
+ browser.getTitle());
+ assertFalse("Backbuttoning handled bad way.", isLoggedIn());
+ }
+ }
+
+ /**
+ * Tries whether backbuttoning after logout is cleanly handled. Using ajax
+ * functionality after logout.
+ */
+ @Test
+ public void backbuttoningAfterLogoutWithAjaxTest() {
+ enterSearchQuery(hotelName);
+ logout();
+ // goBack() does not work with konqueror
+ // browser.refresh();
+ // browser.waitForPageToLoad(TIMEOUT);
+ browser.goBack();
+ browser.waitForPageToLoad(TIMEOUT);
+ if (isLoggedIn()) {
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Backbuttoning failed.", getProperty("PAGE_TITLE"),
+ browser.getTitle());
+ assertFalse("User should not be logged in by now.", isLoggedIn());
+ }
+ }
+
+ /**
+ * Verifies that backbuttoning after ending conversation is handled cleanly.
+ */
+ @Test
+ public void backbuttoningAfterConversationEndTest() {
+ // start booking
+ enterSearchQuery(hotelName);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(getProperty("BOOKING_BOOK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // cancel booking
+ browser.click(getProperty("HOTEL_CANCEL"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.goBack();
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.refresh();
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Conversation failure.", browser
+ .isTextPresent(getProperty("CONVERSATION_TIMEOUT_MESSAGE")));
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/BackButtonTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ChangePasswordTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ChangePasswordTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ChangePasswordTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ * This class tests change password funcionality.
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class ChangePasswordTest extends SeleniumBookingTest {
+
+ private final static String LONG_TEXT = "testertestertest";
+ private final static String SHORT_TEXT = "tt";
+ // overriding default values
+ private final String USERNAME = "gavin";
+ private final String PASSWORD = "foobar";
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ assertTrue("Login failed.", login(USERNAME, PASSWORD));
+ }
+
+ /**
+ * Verifies that changing password works well. If clean-up part of this
+ * method fails it may affect other methods.
+ */
+ @Test
+ public void changePasswordTest() {
+ changePassword("password");
+ assertTrue("Password change failed.", browser
+ .isTextPresent(getProperty("PASSWORD_UPDATED_MESSAGE")));
+ logout();
+ assertTrue("Login failed.", login(USERNAME, "password"));
+ // cleanup - set default password
+ changePassword(PASSWORD);
+ assertTrue("Password change failed.", browser
+ .isTextPresent(getProperty("PASSWORD_UPDATED_MESSAGE")));
+ logout();
+ assertTrue("Login failed.", login(USERNAME, PASSWORD));
+ }
+
+ @Test
+ public void usingDifferentPasswordsTest() {
+ changePassword("password", "password1");
+ assertTrue("Password verification failed", browser
+ .isTextPresent(getProperty("PASSWORD_REENTER_MESSAGE")));
+ }
+
+ @Test
+ public void usingEmptyPasswordsTest() {
+ changePassword("", "");
+ assertEquals("Password validation failed", 2, browser
+ .getXpathCount(getProperty("PASSWORD_VALUE_REQUIRED_MESSAGE")));
+ }
+
+ @Test
+ public void usingLongPasswordTest() {
+ changePassword(LONG_TEXT, LONG_TEXT);
+ assertTrue("Password validation failed", browser
+ .isTextPresent(getProperty("PASSWORD_LENGTH_MESSAGE")));
+ }
+
+ @Test
+ public void usingShortPasswordTest() {
+ changePassword(SHORT_TEXT, SHORT_TEXT);
+ assertTrue("Password validation failed", browser
+ .isTextPresent(getProperty("PASSWORD_LENGTH_MESSAGE")));
+ }
+
+ public void changePassword(String newPassword) {
+ changePassword(newPassword, newPassword);
+ }
+
+ public void changePassword(String newPassword, String verify) {
+ browser.click(getProperty("SETTINGS"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("PASSWORD_PASSWORD"), newPassword);
+ browser.type(getProperty("PASSWORD_VERIFY"), verify);
+ browser.click(getProperty("PASSWORD_SUBMIT"));
+ waitForForm();
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ChangePasswordTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ConversationTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ConversationTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ConversationTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import java.text.MessageFormat;
+
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class ConversationTest extends SeleniumBookingTest {
+
+ private final String hotel1 = "Hotel Rouge";
+ private final String hotel2 = "Doubletree";
+
+ /**
+ * Opens two windows and tries switching over workspaces to make sure
+ * conversations work properly.
+ */
+ @Test
+ public void testConversations() {
+ // Start booking in window 1
+ browser.openWindow(CONTEXT_PATH + getProperty("MAIN_PAGE"), "1");
+ browser.openWindow(CONTEXT_PATH + getProperty("MAIN_PAGE"), "2");
+ browser.selectWindow("1");
+ browser.refresh();
+ browser.waitForPageToLoad(TIMEOUT);
+ if (!isLoggedIn()) {
+ login();
+ }
+ enterSearchQuery(hotel1);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.click(getProperty("BOOKING_BOOK"));
+ // Find hotel in window 2
+ browser.selectWindow("2");
+ if (!isLoggedIn()) {
+ login();
+ }
+ enterSearchQuery(hotel2);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // Reload window 1 to check whether both workspaces are displayed
+ browser.selectWindow("1");
+ browser.refresh();
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("#1 workspace not present in workspace table",
+ MessageFormat.format(getProperty("WORKSPACE_BOOKING_TEXT"),
+ hotel1), browser.getText(MessageFormat.format(
+ getProperty("WORKSPACE_TABLE_LINK_BY_ID"), 0)));
+ assertEquals("#2 workspace not present in workspace table",
+ MessageFormat
+ .format(getProperty("WORKSPACE_VIEW_TEXT"), hotel2),
+ browser.getText(MessageFormat.format(
+ getProperty("WORKSPACE_TABLE_LINK_BY_ID"), 1)));
+ // Switch window 1 to second workspace
+ browser.click(MessageFormat.format(
+ getProperty("WORKSPACE_TABLE_LINK_BY_ID"), 1));
+ browser.waitForPageToLoad(TIMEOUT);
+ // Switch window 1 back to first workspace
+ browser.click(MessageFormat.format(
+ getProperty("WORKSPACE_TABLE_LINK_BY_ID"), 1));
+ browser.waitForPageToLoad(TIMEOUT);
+ // End conversation in window 2
+ browser.selectWindow("2");
+ browser.click(getProperty("BOOKING_CANCEL"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // Second workspace should disappear
+ browser.selectWindow("1");
+ browser.refresh();
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Workspace failure.", 1, browser
+ .getXpathCount(getProperty("WORKSPACE_TABLE_ROW_COUNT")));
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/ConversationTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/RegistrationTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/RegistrationTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/RegistrationTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,133 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ * This class tests registration
+ *
+ * @author jbalunas
+ * @author jharting
+ */
+public class RegistrationTest extends SeleniumBookingTest {
+
+ private final String LONG_TEXT = "testertestertest";
+ private final String SHORT_TEXT = "tes";
+ // private final static int USER_COUNT = 3;
+ private String suffix;
+
+ public RegistrationTest() {
+ Date date = new Date();
+ // suffix is needed to allow tests to be run repeatedly
+ suffix = Long.toString(date.getTime() % 10000000);
+ }
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ }
+
+ @Override
+ @AfterMethod
+ public void tearDown() {
+ stopBrowser();
+ }
+
+ @Test
+ public void testVerify() {
+ register("tester", "tester", "password", "password1");
+ // assertTrue("Error message expected.",
+ // browser.isElementPresent(get("REGISTRATION_VERIFY_MESSAGE")));
+ assertTrue("Password verification failed.", browser
+ .isTextPresent(getProperty("REGISTRATION_REENTER_MESSAGE")));
+ }
+
+ @Test
+ public void testLongText() {
+ register(LONG_TEXT, "tester", "password", "password");
+ assertTrue("Username validation failed.", browser
+ .isTextPresent(getProperty("REGISTRATION_LENGTH_MESSAGE")));
+ }
+
+ @Test
+ public void testShortText() {
+ register(SHORT_TEXT, "tester", "password", "password");
+ assertTrue("Username validation failed.", browser
+ .isTextPresent(getProperty("REGISTRATION_LENGTH_MESSAGE")));
+ }
+
+ @Test
+ public void testDuplicateUser() {
+ String username = "tester" + suffix;
+ register(username, "tester", "password", "password");
+ assertTrue("Navigation after succesful registration failed.", browser
+ .getLocation().contains(getProperty("HOME_PAGE")));
+ // assertTrue("Registration failed.",
+ // browser.isTextPresent(MessageFormat.format(get("REGISTRATION_SUCCESSFUL_MESSAGE"),
+ // username)));
+ register(username, "tester", "password", "password");
+ assertTrue("Registered 2 users with the same username.", browser
+ .isTextPresent(MessageFormat.format(
+ getProperty("REGISTRATION_USER_EXISTS_MESSAGE"), username)));
+ }
+
+ @Test
+ public void standardRegistrationTest() {
+ String username = "john" + suffix;
+ String name = "John Doe";
+ String password = "password";
+ register(username, name, password, password);
+ assertTrue("Navigation after succesful registration failed.", browser
+ .getLocation().contains(getProperty("HOME_PAGE")));
+ // assertTrue("Registration failed.",
+ // browser.isTextPresent(MessageFormat.format(get("REGISTRATION_SUCCESSFUL_MESSAGE"),
+ // username)));
+ // try logging in to verify registration
+ assertTrue("Login failed.", login(username, password));
+ }
+
+ private void register(String username, String name, String password,
+ String verify) {
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("Unable to load home page.", getProperty("PAGE_TITLE"), browser
+ .getTitle());
+ browser.click(getProperty("REGISTRATION"));
+ browser.waitForPageToLoad(TIMEOUT);
+ browser.type(getProperty("REGISTRATION_USERNAME"), username);
+ browser.type(getProperty("REGISTRATION_NAME"), name);
+ browser.type(getProperty("REGISTRATION_PASSWORD"), password);
+ browser.type(getProperty("REGISTRATION_VERIFY"), verify);
+ browser.click(getProperty("REGISTRATION_SUBMIT"));
+ waitForForm();
+ }
+
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/RegistrationTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SeleniumBookingTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SeleniumBookingTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SeleniumBookingTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,151 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.fail;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import com.thoughtworks.selenium.Wait;
+
+/**
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class SeleniumBookingTest extends SeamSeleniumTest {
+
+ private final String DEFAULT_USERNAME = "demo";
+ private final String DEFAULT_PASSWORD = "demo";
+
+ @Override
+ @BeforeMethod
+ public void setUp() {
+ super.setUp();
+ assertTrue("Login failed.", login());
+ }
+
+ @Override
+ @AfterMethod
+ public void tearDown() {
+ logout();
+ super.tearDown();
+ }
+
+ public boolean login() {
+ return login(DEFAULT_USERNAME, DEFAULT_PASSWORD);
+ }
+
+ public boolean login(String username, String password) {
+ if (isLoggedIn()) {
+ fail("User already logged in.");
+ }
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ if (!browser.getTitle().equals(getProperty("PAGE_TITLE"))) {
+ return false;
+ }
+ browser.type(getProperty("LOGIN_USERNAME_FIELD"), username);
+ browser.type(getProperty("LOGIN_PASSWORD_FIELD"), password);
+ browser.click(getProperty("LOGIN_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ return isLoggedIn();
+ }
+
+ public void logout() {
+ if (isLoggedIn()) {
+ browser.click(getProperty("LOGOUT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ }
+
+ public boolean isLoggedIn() {
+ return browser.isElementPresent(getProperty("LOGOUT"));
+ }
+
+ public void enterSearchQuery(String query) {
+ if (getProperty("USE_AJAX_SEARCH").equalsIgnoreCase("FALSE")) {
+ enterSearchQueryWithoutAJAX(query);
+ } else {
+ if (getProperty("USE_SEARCH_BUTTON").equalsIgnoreCase("TRUE")) {
+ enterSearchQueryUsingAJAX(query, true);
+ } else {
+ enterSearchQueryUsingAJAX(query, false);
+ }
+ }
+ }
+
+ public void enterSearchQueryUsingAJAX(String query, boolean click) {
+ browser.type(getProperty("SEARCH_STRING_FIELD"), "");
+ browser.type(getProperty("SEARCH_STRING_FIELD"), query.substring(0, query
+ .length() - 1));
+ browser.typeKeys(getProperty("SEARCH_STRING_FIELD"), query.substring(query
+ .length() - 1));
+ if (click) {
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ }
+ // wait for javascript to show spinner
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ // wait for page to get updated
+ new Wait() {
+ @Override
+ public boolean until() {
+ return !browser.isVisible(getProperty("SPINNER"));
+ }
+ }.wait("Spinner hasn't come out.");
+ new Wait() {
+ @Override
+ public boolean until() {
+ return (browser.isElementPresent(getProperty("SEARCH_RESULT_TABLE")) || browser
+ .isElementPresent(getProperty("NO_HOTELS_FOUND")));
+ }
+ }.wait("Search results not found.");
+ }
+
+ public void enterSearchQueryWithoutAJAX(String query) {
+ browser.type(getProperty("SEARCH_STRING_FIELD"), "");
+ browser.type(getProperty("SEARCH_STRING_FIELD"), query);
+ browser.click(getProperty("SEARCH_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ public void waitForForm() {
+ if (getProperty("USE_ICEFACES_FORMS").equalsIgnoreCase("TRUE")) {
+ new Wait() {
+ @Override
+ public boolean until() {
+ return !browser.isElementPresent("xpath=//*[@style='cursor: wait;']")
+ && browser.isElementPresent(getProperty("FOOTER"));
+ }
+ }.wait("Page was not refreshed.");
+ } else {
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SeleniumBookingTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SimpleBookingTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SimpleBookingTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SimpleBookingTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,184 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.selenium;
+
+import java.text.MessageFormat;
+
+import org.testng.annotations.Test;
+
+import static org.testng.AssertJUnit.*;
+
+/**
+ * This class tests booking functionality of the example.
+ *
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public class SimpleBookingTest extends SeleniumBookingTest {
+
+ protected final String EXPECTED_NAME = "Demo User";
+ protected final String CREDIT_CARD = "0123456789012345";
+ protected final String CREDIT_CARD_NAME = "visa";
+
+ /**
+ * Tries searching for non existing hotel.
+ */
+ @Test(enabled = true)
+ public void invalidSearchStringTest() {
+ enterSearchQuery("NonExistingHotel");
+ assertTrue("Search failed.", browser
+ .isElementPresent(getProperty("NO_HOTELS_FOUND")));
+ }
+
+ /**
+ * Simply books hotel.
+ */
+ @Test(enabled = true)
+ public void simpleBookingTest() {
+ String hotelName = "W Hotel";
+ int confirmationNumber;
+ confirmationNumber = bookHotel(hotelName);
+ assertTrue("Booking with confirmation number " + confirmationNumber
+ + " not found.", browser.isElementPresent(MessageFormat.format(
+ getProperty("BOOKING_TABLE_ITEM"), confirmationNumber, hotelName)));
+ }
+
+ /**
+ * Tries booking hotel with incorrect dates.
+ */
+ @Test(enabled = true)
+ public void invalidDatesTest() {
+ String hotelName = "W Hotel";
+ enterSearchQuery(hotelName);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // hotel page
+ browser.click(getProperty("BOOKING_BOOK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // booking page
+ String checkOut = browser.getValue(getProperty("HOTEL_CHECKOUT_DATE_FIELD"));
+ populateBookingFields();
+ // switch check in and check out date
+ browser.type(getProperty("HOTEL_CHECKIN_DATE_FIELD"), checkOut);
+ browser.click(getProperty("HOTEL_PROCEED"));
+ waitForForm();
+ assertTrue("Date verification #1 failed.", browser
+ .isTextPresent(getProperty("BOOKING_INVALID_DATE_MESSAGE1")));
+ assertTrue("Check-out date error message expected.", browser
+ .isElementPresent(getProperty("HOTEL_CHECKOUT_DATE_MESSAGE")));
+ // set check in to past
+ browser.type(getProperty("HOTEL_CHECKIN_DATE_FIELD"), "01/01/1970");
+ browser.click(getProperty("HOTEL_PROCEED"));
+ waitForForm();
+ assertTrue("Date verification #2 failed.", browser
+ .isTextPresent(getProperty("BOOKING_INVALID_DATE_MESSAGE2")));
+ assertTrue("Checkin-date error message expected.", browser
+ .isElementPresent(getProperty("HOTEL_CHECKIN_DATE_MESSAGE")));
+ }
+
+ /**
+ * This test verifies that user gets right confirmation number when
+ * canceling order. https://jira.jboss.org/jira/browse/JBSEAM-3288
+ */
+ @Test(enabled = true)
+ public void testJBSEAM3288() {
+ String[] hotelNames = new String[] { "Doubletree", "Hotel Rouge",
+ "Conrad Miami" };
+ int[] confirmationNumbers = new int[3];
+ // make 3 bookings
+ for (int i = 0; i < 3; i++) {
+ int confirmationNumber = bookHotel(hotelNames[i]);
+ confirmationNumbers[i] = confirmationNumber;
+ }
+ // assert that there bookings are listed in hotel booking list
+ for (int i = 0; i < 3; i++) {
+ assertTrue("Expected booking #" + i + " not present", browser
+ .isElementPresent(MessageFormat.format(
+ getProperty("BOOKING_TABLE_ITEM"), confirmationNumbers[i],
+ hotelNames[i])));
+ }
+ // cancel all the reservations
+ for (int i = 2; i >= 0; i--) {
+ browser.click(MessageFormat.format(getProperty("BOOKING_TABLE_ITEM_LINK"),
+ confirmationNumbers[i], hotelNames[i]));
+ browser.waitForPageToLoad(TIMEOUT);
+ assertTrue("Booking canceling failed", browser
+ .isTextPresent(MessageFormat.format(
+ getProperty("BOOKING_CANCELLED_MESSAGE"),
+ confirmationNumbers[i])));
+ }
+
+ }
+
+ protected int bookHotel(String hotelName, int bed, int smoking,
+ String creditCard, String creditCardName) {
+ if (!isLoggedIn())
+ fail();
+ if (!browser.isElementPresent(getProperty("SEARCH_SUBMIT"))) {
+ browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ enterSearchQuery(hotelName);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // booking page
+ browser.click(getProperty("BOOKING_BOOK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // hotel page
+ populateBookingFields(bed, smoking, creditCard, creditCardName);
+ browser.click(getProperty("HOTEL_PROCEED"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // confirm page
+ browser.click(getProperty("HOTEL_CONFIRM"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // main page
+ String message = browser.getText(getProperty("HOTEL_MESSAGE"));
+ assertTrue("Booking failed. Confirmation message does not match.", message.matches(
+ MessageFormat.format(getProperty("BOOKING_CONFIRMATION_MESSAGE"), EXPECTED_NAME, hotelName)));
+ String[] messageParts = message.split(" ");
+ int confirmationNumber = Integer
+ .parseInt(messageParts[messageParts.length - 1]);
+ return confirmationNumber;
+ }
+
+ protected int bookHotel(String hotelName) {
+ return bookHotel(hotelName, 2, 0, CREDIT_CARD, CREDIT_CARD_NAME);
+ }
+
+ protected void populateBookingFields(int bed, int smoking,
+ String creditCard, String creditCardName) {
+ browser.select(getProperty("HOTEL_BED_FIELD"),
+ getProperty("HOTEL_BED_FIELD_SELECT_CRITERIA") + bed);
+ if (smoking == 1) {
+ browser.check(getProperty("HOTEL_SMOKING_1"));
+ } else {
+ browser.check(getProperty("HOTEL_SMOKING_2"));
+ }
+ browser.type(getProperty("HOTEL_CREDIT_CARD"), creditCard);
+ browser.type(getProperty("HOTEL_CREDIT_CARD_NAME"), creditCardName);
+ }
+
+ protected void populateBookingFields() {
+ populateBookingFields(2, 0, CREDIT_CARD, CREDIT_CARD_NAME);
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/selenium/SimpleBookingTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/selenium/CommonNumberGuessTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/selenium/CommonNumberGuessTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/numberguess/selenium/CommonNumberGuessTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,108 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.numberguess.selenium;
+
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
+
+/**
+ *
+ * @author Jozef Hartinger
+ *
+ */
+public class CommonNumberGuessTest extends SeamSeleniumTest
+{
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ @Test
+ public void smartTest()
+ {
+
+ int min;
+ int max;
+ int guess;
+ int i = 0;
+
+ while (browser.getLocation().contains(getProperty("GUESS_LOCATION")))
+ {
+ if (i > 9)
+ {
+ fail("Game should not be longer than 10 guesses");
+ }
+ min = Integer.parseInt(browser.getText(getProperty("GUESS_MIN_VALUE")));
+ max = Integer.parseInt(browser.getText(getProperty("GUESS_MAX_VALUE")));
+ guess = min + ((max - min) / 2);
+ enterGuess(guess);
+ i++;
+ }
+ assertTrue("Win page expected after playing smart.", isOnWinPage());
+ }
+
+ @Test
+ public void linearTest()
+ {
+ int guess = 0;
+
+ while (browser.getLocation().contains(getProperty("GUESS_LOCATION")))
+ {
+ enterGuess(++guess);
+ assertTrue("Guess count exceeded.", guess <= 10);
+ }
+ if (guess < 10)
+ {
+ assertTrue("Player should not lose before 10th guess.", isOnWinPage());
+ }
+ else
+ {
+ assertTrue("After 10th guess player should lose or win.", isOnLosePage() || isOnWinPage());
+ }
+
+ }
+
+ protected void enterGuess(int guess)
+ {
+ browser.type(getProperty("GUESS_FIELD"), String.valueOf(guess));
+ browser.click(getProperty("GUESS_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ protected boolean isOnWinPage()
+ {
+ return browser.getLocation().contains(getProperty("WIN_LOCATION"));
+ }
+
+ protected boolean isOnLosePage()
+ {
+ return browser.getLocation().contains(getProperty("LOSE_LOCATION"));
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/PaymentTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/PaymentTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/PaymentTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,130 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.seampay.selenium;
+
+import static org.testng.AssertJUnit.*;
+
+import java.math.BigDecimal;
+import java.text.MessageFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author jharting
+ *
+ */
+public class PaymentTest extends SeamSeleniumTest
+{
+
+ protected NumberFormat nf = NumberFormat.getNumberInstance();
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ /**
+ * Submits new payment and asserts that remaining account balance is correct.
+ *
+ * @throws ParseException
+ */
+ @Test
+ public void payOnceTest() throws ParseException
+ {
+ int account = 0;
+ BigDecimal amount = new BigDecimal(10);
+ String to = "foo";
+ String accountLinkLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_LINK"), account);
+ String accountBalanceLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_BALANCE"), account);
+
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal expectedBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+ submitPayment(to, amount.toString(), getProperty("PAYMENT_ONLY_ONCE_RADIO"));
+ assertTrue("Scheduled payment not confirmed.", browser.isTextPresent(MessageFormat.format(getProperty("PAYMENT_CONFIRMATION_MESSAGE"), to)));
+ assertEquals("Invalid count of payments.", 1, browser.getXpathCount(getProperty("PAYMENTS_COUNT")));
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ assertEquals("No money were subtracted from account", expectedBalance.subtract(amount), BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator))));
+ }
+
+ /**
+ * Submits new payment with one minute interval and verifies the balance
+ * after 60 seconds
+ *
+ * @throws ParseException
+ * @throws InterruptedException
+ */
+ @Test
+ public void payEveryMinuteTest() throws ParseException, InterruptedException
+ {
+ int account = 1;
+ BigDecimal amount = new BigDecimal(10);
+ String to = "foo";
+ String accountLinkLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_LINK"), account);
+ String accountBalanceLocator = MessageFormat.format(getProperty("ACCOUNT_TABLE_BALANCE"), account);
+
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ // create new payment
+ submitPayment(to, amount.toString(), getProperty("PAYMENT_EVERY_MINUTE_RADIO"));
+ assertTrue("Scheduled payment not confirmed.", browser.isTextPresent(MessageFormat.format(getProperty("PAYMENT_CONFIRMATION_MESSAGE"), to)));
+ assertEquals("Invalid count of payments.", 1, browser.getXpathCount(getProperty("PAYMENTS_COUNT")));
+ // wait
+ Thread.sleep(5000);
+ // get first balance
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal firstBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+ // wait 60 seconds
+ Thread.sleep(60000);
+ // get second balance
+ browser.click(accountLinkLocator);
+ browser.waitForPageToLoad(TIMEOUT);
+ BigDecimal secondBalance = BigDecimal.valueOf(parseBalance(browser.getText(accountBalanceLocator)));
+ BigDecimal expectedSecondBalance = firstBalance.subtract(amount);
+ assertEquals("No money were subtracted from account after a minute", expectedSecondBalance, secondBalance);
+ }
+
+ protected void submitPayment(String to, String amount, String radio)
+ {
+ browser.type(getProperty("PAYMENT_TO_FIELD"), to);
+ browser.type(getProperty("PAYMENT_AMOUNT_FIELD"), amount.toString());
+ browser.check(radio);
+ browser.click(getProperty("PAYMENT_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ protected Double parseBalance(String text) throws ParseException
+ {
+ String number = text.replaceAll("\\$", "").trim();
+ return (Double) nf.parse(number);
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/seampay/selenium/PaymentTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSelenium.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSelenium.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSelenium.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,72 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.selenium;
+
+import com.thoughtworks.selenium.DefaultSelenium;
+
+/**
+ * This class slightly enhaces a Selenium API for controlling a browser.
+ * @author Jozef Hartinger
+ *
+ */
+public class SeamSelenium extends DefaultSelenium
+{
+
+ protected String timeout = "30000";
+
+ public SeamSelenium(String serverHost, int serverPort, String browserStartCommand, String browserURL)
+ {
+ super(serverHost, serverPort, browserStartCommand, browserURL);
+ }
+
+ @Override
+ public void setTimeout(String timeout) {
+ super.setTimeout(timeout);
+ this.timeout = timeout;
+ }
+
+ /**
+ * Same as click method but waits for page to load after clicking. Default timeout can be changed by setTimeout() method.
+ * @param locator
+ */
+ public void clickAndWait(String locator) {
+ super.click(locator);
+ super.waitForPageToLoad(timeout);
+ }
+
+ /**
+ * Simulates a user pressing "back" button and waits for page to load. Default timeout can be changed by setTimeout() method.
+ */
+ public void goBackAndWait() {
+ super.goBack();
+ super.waitForPageToLoad(timeout);
+ }
+
+ /**
+ * Simulates a user pressing "refresh" button and waits for page to load. Default timeout can be changed by setTimeout() method.
+ */
+ public void refreshAndWait() {
+ super.refresh();
+ super.waitForPageToLoad(timeout);
+ }
+
+}
Added: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java 2009-02-18 16:07:30 UTC (rev 10055)
@@ -0,0 +1,107 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.selenium;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import static org.testng.AssertJUnit.*;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Optional;
+import org.testng.annotations.Parameters;
+
+/**
+ * Base class for all Seam based selenium tests.
+ * @author jbalunas
+ * @author jharting
+ *
+ */
+public abstract class SeamSeleniumTest {
+
+ private static String HOST;
+ private static int PORT;
+ private static String BROWSER;
+ private static String BROWSER_URL;
+ private static String SPEED;
+ public static String TIMEOUT;
+ private static String PROPERTY_FILE;
+ protected String CONTEXT_PATH = "";
+ private static Properties properties = new Properties();
+ private static boolean propertiesLoaded = false;
+
+ protected SeamSelenium browser;
+
+ @BeforeClass
+ @Parameters( { "selenium.host", "selenium.server.port", "selenium.browser",
+ "selenium.browser.url", "selenium.speed", "selenium.timeout",
+ "PROPERTY_FILE", "CONTEXT_PATH" })
+ public void setParameters(String host, String port, String browser,
+ String browserUrl, String speed, String timeout, String propertyFile, @Optional("") String contextPath) {
+ HOST = host;
+ PORT = Integer.parseInt(port);
+ BROWSER = browser;
+ BROWSER_URL = browserUrl;
+ SPEED = speed;
+ TIMEOUT = timeout;
+ PROPERTY_FILE = propertyFile;
+ CONTEXT_PATH = contextPath;
+ }
+
+ @BeforeMethod
+ public void setUp() {
+ browser = startBrowser();
+ }
+
+ @AfterMethod
+ public void tearDown() {
+ stopBrowser();
+ }
+
+ public SeamSelenium startBrowser() {
+ SeamSelenium newBrowser = new SeamSelenium(HOST, PORT, BROWSER, BROWSER_URL);
+ newBrowser.start();
+ newBrowser.allowNativeXpath("false");
+ newBrowser.setSpeed(SPEED);
+ newBrowser.setTimeout(TIMEOUT);
+ return newBrowser;
+ }
+
+ public void stopBrowser() {
+ browser.stop();
+ }
+
+ public String getProperty(String key) {
+ if (!propertiesLoaded) {
+ try {
+ properties.load(SeamSeleniumTest.class.getResourceAsStream(PROPERTY_FILE));
+ propertiesLoaded = true;
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Property file not found.");
+ }
+ }
+ return properties.getProperty(key, "Property not found: " + key);
+ }
+}
Property changes on: branches/enterprise/JBPAPP_4_3_FP01/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
___________________________________________________________________
Name: svn:executable
+ *
15 years, 7 months
Seam SVN: r10054 - in trunk: build and 1 other directory.
by seam-commits@lists.jboss.org
Author: jharting
Date: 2009-02-18 09:03:11 -0500 (Wed, 18 Feb 2009)
New Revision: 10054
Modified:
trunk/build.xml
trunk/build/validate.xml
Log:
JBSEAM-3751
Modified: trunk/build/validate.xml
===================================================================
--- trunk/build/validate.xml 2009-02-17 16:03:42 UTC (rev 10053)
+++ trunk/build/validate.xml 2009-02-18 14:03:11 UTC (rev 10054)
@@ -23,6 +23,8 @@
http://jboss.com/products/seam/theme ${src.schema.dir}/theme-${schema.version}.xsd
http://jboss.com/products/seam/transaction ${src.schema.dir}/transaction-${schema.version}.xsd
http://jboss.com/products/seam/web ${src.schema.dir}/web-${schema.version}.xsd " />
+
+ <property name="xsdLocation" value="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" />
<taskdef name="xmlvalidate.task" classname="org.apache.tools.ant.taskdefs.optional.XMLValidateTask">
<classpath>
@@ -46,19 +48,29 @@
<include name="**/*.jpdl.xml" />
<exclude name="**/.gpd.*.jpdl.xml" />
</fileset>
+
+ <fileset id="validate.schemas" dir="${seam.dir}">
+ <include name="src/**/*.xsd" />
+ </fileset>
<target name="validateConfiguration" description="Validate XML Configuration Files">
<validateConfiguration>
<fileset refid="validate.resources" />
</validateConfiguration>
</target>
+
+ <target name="validatexsd" description="Validate all XML Schemas">
+ <validateConfiguration>
+ <fileset refid="validate.schemas" />
+ </validateConfiguration>
+ </target>
<presetdef name="validateConfiguration" >
<xmlvalidate.task classname="org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser">
<attribute name="http://xml.org/sax/features/validation" value="true" />
<attribute name="http://apache.org/xml/features/validation/schema" value="true" />
<attribute name="http://xml.org/sax/features/namespaces" value="true" />
- <property name="http://apache.org/xml/properties/schema/external-schemaLocation" value="${seam.schemaLocations}" />
+ <property name="http://apache.org/xml/properties/schema/external-schemaLocation" value="${seam.schemaLocations} ${xsdLocation}" />
<xmlcatalog>
<dtd publicId="-//JBoss/Seam Component Configuration DTD 2.0//EN" location="${src.schema.dir}/components-${schema.version}.dtd" />
<dtd publicId="-//JBoss/Seam Pages Configuration DTD 2.0//EN" location="${src.schema.dir}/pages-${schema.version}.dtd" />
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2009-02-17 16:03:42 UTC (rev 10053)
+++ trunk/build.xml 2009-02-18 14:03:11 UTC (rev 10054)
@@ -526,6 +526,7 @@
<target name="testall" depends="test,build,copylib,testexamples" description="Run the core unit tests and all example tests"/>
<target name="validateall" description="Validate all example XML Configuration Files">
+ <ant antfile="${seam.dir}/build/validate.xml" target="validatexsd"/>
<ant dir="examples/booking" target="validateConfiguration" inheritall="false" />
<ant dir="examples/blog" target="validateConfiguration" inheritall="false" />
<ant dir="examples/contactlist" target="validateConfiguration" inheritall="false" />
15 years, 7 months
Seam SVN: r10053 - trunk/src/excel/org/jboss/seam/excel.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-17 11:03:42 -0500 (Tue, 17 Feb 2009)
New Revision: 10053
Modified:
trunk/src/excel/org/jboss/seam/excel/excel-2.1.xsd
Log:
JBSEAM-3959
Modified: trunk/src/excel/org/jboss/seam/excel/excel-2.1.xsd
===================================================================
--- trunk/src/excel/org/jboss/seam/excel/excel-2.1.xsd 2009-02-17 10:52:35 UTC (rev 10052)
+++ trunk/src/excel/org/jboss/seam/excel/excel-2.1.xsd 2009-02-17 16:03:42 UTC (rev 10053)
@@ -10,7 +10,9 @@
<xs:documentation>Factory creating excel workbook instances</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
- <xs:element name="implementations" type="components:mapProperty" />
+ <xs:sequence>
+ <xs:element name="implementations" type="components:mapProperty" />
+ </xs:sequence>
</xs:complexType>
</xs:element>
15 years, 7 months
Seam SVN: r10052 - branches/enterprise/JBPAPP_4_3_FP01.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-17 05:52:35 -0500 (Tue, 17 Feb 2009)
New Revision: 10052
Added:
branches/enterprise/JBPAPP_4_3_FP01/clustering-howto.txt
Log:
JBPAPP-1495
Added: branches/enterprise/JBPAPP_4_3_FP01/clustering-howto.txt
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/clustering-howto.txt (rev 0)
+++ branches/enterprise/JBPAPP_4_3_FP01/clustering-howto.txt 2009-02-17 10:52:35 UTC (rev 10052)
@@ -0,0 +1,213 @@
+= Deploying a Seam application into a JBoss AS cluster using HTTP session replication =
+
+The procedure outlined in this tutorial has been validated with an seam-gen application and the Seam booking example.
+
+In the tutorial, I assume that the IP addresses of the master and slave servers are 192.168.1.2 and 192.168.1.3,
+respectively. I am intentionally not using the mod_jk load balancer so that it's easier to validate that both nodes are
+responding to requests and interchanging sessions.
+
+The log messages shown below were generated from the deployment of a WAR application named vehicles.war and its
+cooresponding datasource named vehiclesDatasource. The booking example fully supports this process and you can find instructions on how to deploy it to a cluster in the examples/booking/readme.txt file.
+
+I'm using the farm deployment method in these instructions, though you could also deploy the application normally and
+allow the two servers to negotiate a master/slave relationship based on startup order.
+
+All timestamps have been zeroed out to reduce noise.
+
+== A note about SELinux ==
+
+You might run into problems getting your nodes to see one another if they are on different machines and the machines are
+running RHEL/Fedora. JBoss AS clustering relies on UDP multicasting provided by jGroups. The SELinux configuration that
+ships with RHEL/Fedora blocks these packets by default. You can allow them to pass by modifying the iptables rules (as
+root). The following commands apply to an IP address that matches 192.168.1.x.
+
+ /sbin/iptables -I RH-Firewall-1-INPUT 5 -p udp -d 224.0.0.0/4 -j ACCEPT
+ /sbin/iptables -I RH-Firewall-1-INPUT 9 -p udp -s 192.168.1.0/24 -j ACCEPT
+ /sbin/iptables -I RH-Firewall-1-INPUT 10 -p tcp -s 192.168.1.0/24 -j ACCEPT
+ /etc/init.d/iptables save
+
+== A note about SFSBs ==
+
+If you are deploying an application with SFSBs and HTTP session replication to a JBoss AS cluster, you must ensure that your SFSB classes are annotated with @Clustered (from the JBoss EJB 3 annotation API) or marked as clustered in the jboss.xml descriptor. See the booking example for details.
+
+With that out of the way, it's time to get started.
+
+== Tutorial ==
+
+1. Create two instances of JBoss AS (just extract the zip twice)
+2. Deploy the JDBC driver to server/all/lib/ on both instances if not using HSQLDB
+3. Add <distributable/> as the first child element in WEB-INF/web.xml
+4. Set the distributable property on org.jboss.seam.core.init to true to enabled the ManagedEntityInterceptor
+ (i.e., <core:init distributable="true"/> in WEB-INF/components.xml)
+5. Have two IP addresses available (two computers, two network cards, or two IP addresses bound to the same interface).
+
+On *nix, you can bind a new IP address to a network interface using the following command:
+
+ /sbin/ifconfig eth1:2 192.168.1.3
+
+Replace eth1 with your interface name and make the IP address conform to your network.
+
+If you're on Windows, follow these steps:
+
+ - Open your network adapter
+ - Click Properties
+ - Select Internet Protocol (TCP/IP) then click Properties
+ - Click Advanced...
+ - Select the IP settings tab and click Add...
+ - Type in an IP address, click Add
+ - Click OK on all open windows
+
+6. Start the master JBoss AS instance on the first IP:
+
+ ./bin/run.sh -c all -b 192.168.1.2
+
+You should see the following in the log:
+
+00:00:00,000 INFO [DefaultPartition] Number of cluster members: 1
+00:00:00,000 INFO [DefaultPartition] Other members: 0
+00:00:00,000 INFO [DefaultPartition] Fetching state (will wait for 30000 milliseconds):
+00:00:00,000 INFO [DefaultPartition] State could not be retrieved (we are the first member in group)
+
+7. Verify that the server/all/farm directory is empty in the slave JBoss AS instance
+8. Start the slave JBoss AS on second the IP
+
+ ./bin/run.sh -c all -b 192.168.1.3
+
+Should see the following in the log:
+
+00:00:00,000 INFO [DefaultPartition] Number of cluster members: 2
+00:00:00,000 INFO [DefaultPartition] Other members: 1
+00:00:00,000 INFO [DefaultPartition] Fetching state (will wait for 30000 milliseconds):
+00:00:00,000 INFO [DefaultPartition] state was retrieved successfully (in 120 milliseconds)
+
+Back in the first instance's log you should see acknowledgement of the new member:
+
+00:00:00,000 INFO [DefaultPartition] I am (192.168.1.2:1099) received membershipChanged event:
+00:00:00,000 INFO [DefaultPartition] Dead members: 0 ([])
+00:00:00,000 INFO [DefaultPartition] New Members : 1 ([192.168.1.3:1099])
+00:00:00,000 INFO [DefaultPartition] All Members : 2 ([192.168.1.2:1099, 192.168.1.3:1099])
+
+9. Deploy the -ds.xml to server/all/farm of the master instance
+
+In the log of the master instance you should see acknowlegement of this deployment:
+
+00:00:00,000 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=vehiclesDatasource' to JNDI name 'java:vehiclesDatasource'
+00:00:00,000 INFO [ClusterFileTransfer] Start push of file vehicles-ds.xml to cluster.
+00:00:00,000 INFO [ClusterFileTransfer] Finished push of file vehicles-ds.xml to cluster.
+
+In the log of the slave instance you should see a complimentary message:
+
+00:00:00,000 INFO [FarmMemberService] farmDeployment(), deploy locally: farm/vehicles-ds.xml
+00:00:00,000 INFO [ConnectionFactoryBindingService] Unbound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=vehiclesDatasource' from JNDI name 'java:vehiclesDatasource'
+
+10. Deploy the application to the server/all/farm directory
+
+In the log of the master instance you should see acknowlegement of this deployment after the normal application startup
+messages have finished:
+
+00:00:00,000 INFO [ClusterFileTransfer] Start push of file vehicles.war to cluster.
+
+Wait ~3 minutes for the deployed archive to be transferred (I don't know why it takes so long)
+
+In the log of the master instance you should see acknowlegement of this deployment prior to the normal application
+startup messages:
+
+00:00:00,000 INFO [FarmMemberService] farmDeployment(), deploy locally: farm/vehicles.war
+
+Once the application is transfered, you should see confirmation in the log of the master instance:
+
+00:00:00,000 INFO [ClusterFileTransfer] Finished push of file vehicles.war to cluster.
+
+Then you should see the application startup messages appear in the slave instance.
+
+You're application is now running in a cluster with HTTP session replication! But, of course, you are going to want to
+validate that the clustering actually works.
+
+= Validating the distributable services of an application running in a cluster =
+
+It's all well and fine to see the application start successfully on two different JBoss AS servers, but seeing is
+believing. You likely want to validate that the two instances are exchanging HTTP sessions to allow the slave to take
+over when the master instance is stopped.
+
+Start off by visiting the application running on the master instance in your browser. That will produce the first HTTP
+session. Now, open up the JBoss AS JMX console on that instance and navigate to the following MBean:
+
+category: jboss.cache
+entry: service=TomcatClusteringCache
+method: printDetails()
+
+Invoke the printDetails() method. You will see a tree of active HTTP sessions. Verify that the session your browser is
+using corresponds to one of the sessions in this tree. Here is a shortcut for invoking that method:
+
+ http://192.168.1.2:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&nam...
+
+Now switch over to the slave instance and invoke the same method in the JMX console. You should see an identical list
+(at least underneath this application's context path). Here's the shortcut to that method.
+
+ http://192.168.1.3:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&nam...
+
+So you can see that at least both servers claim to have identical sessions. Now, time to test that the data is
+serializing and unserializing properly.
+
+Here are the steps I follow when I test the booking example:
+
+1. Remove all cookies in your browser (or at least the JSESSIONID cookie for the domain 192.168.1.2)
+
+2. Open the booking example on the master instance:
+
+ http://192.168.1.2/seam-booking
+
+3. Sign in using gavin/foobar, then click on the Find Hotels button
+
+4. Get a booking started:
+
+ a. Choose one of the hotels and click its View Hotel link
+ b. Click on the Book Hotel button
+
+5. Build a URL to access the application on the slave instance
+
+ a. Copy the URL in the workspace list at the bottom of the page
+ b. Change 192.168.1.2 to 192.168.1.3
+ c. Get the value of the JSESSIONID cookie from the current page
+ d. Insert ;jsessionid= plus the value of the JSESSIONID cookie before the ? in the URL
+
+6. Visit the URL in a browser that has cookies disabled (the easiest way to ensure the session id in the URL is used)
+
+ links "http://192.168.1.3/seam-booking/book.seam;jsessionid=****?cid=4
+
+7. Complete the booking form and click the Proceed button
+
+8. Now return to the first browser and change the URL to match the confirm page, keeping the cid request parameter
+
+ http://192.168.1.2/seam-booking/confirm.seam?cid=4
+
+9. (optional) Verify you can continue w/o the slave instance running. Go into the JMX console and execute the shutdown() method on jboss.system:type=Server
+
+10. Confirm the booking.
+
+Here's another approach that I wrote before I did the step-by-step:
+
+Sign in using using the URL of the master instance. Then, construct a URL for the second instance by putting the
+;jsessionid=XXXX immediately after the servlet path and changing the IP address. You should see that the session has
+carried over to the other instance. Now kill the master instance and see that you can continue to use the application
+from the slave instance. Remove the deployments from the server/all/farm directory and start the instance again. Switch
+the IP in the URL back to that of the master instance and visit the URL. You'll see that the original session is still
+being used.
+
+One way to watch objects passivate and activate is to create a session- or conversation-scoped Seam component and
+implement the appropriate life-cycle methods. You can either use methods from the HttpSessionActivationListener
+interface (Seam automatically registers this interface on all non-EJB components):
+
+ public void sessionWillPassivate(HttpSessionEvent e);
+ public void sessionDidActivate(HttpSessionEvent e);
+
+or you can simply mark two no-argument public void methods with @PrePassivate and @PostActivate, respectively. Note that
+the passivation step occurs at the end of every request, while the activation step occurs when a node is called upon.
+
+The really nice part about Seam is that it is working very hard to make replication transparent by automatically keeping
+track of dirty object and ensuring that they are propagated. All you need to do is maintain a dirty flag on your
+session- or conversation-scoped component. Seam automatically takes care of JPA entity instances for you.
+
+= Notes and outstanding issues =
+
+* transient fields aren't always reinitialized, required a fix to SecurityInterceptor; might show up elsewhere
15 years, 7 months
Seam SVN: r10051 - in trunk/src/pdf: org/jboss/seam/pdf/ui and 1 other directory.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-16 18:47:23 -0500 (Mon, 16 Feb 2009)
New Revision: 10051
Added:
trunk/src/pdf/org/jboss/seam/pdf/ui/UITimeSeriesChart.java
Modified:
trunk/src/pdf/META-INF/faces-config.xml
trunk/src/pdf/META-INF/seam-pdf.taglib.xml
trunk/src/pdf/org/jboss/seam/pdf/ui/UIBarChart.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UICategoryChartBase.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UIChart.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartData.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartSeries.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java
trunk/src/pdf/org/jboss/seam/pdf/ui/UIPieChart.java
Log:
JBSEAM-3750
Modified: trunk/src/pdf/META-INF/faces-config.xml
===================================================================
--- trunk/src/pdf/META-INF/faces-config.xml 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/META-INF/faces-config.xml 2009-02-16 23:47:23 UTC (rev 10051)
@@ -120,6 +120,11 @@
</component>
<component>
+ <component-type>org.jboss.seam.pdf.ui.UITimeSeriesChart</component-type>
+ <component-class>org.jboss.seam.pdf.ui.UITimeSeriesChart</component-class>
+ </component>
+
+ <component>
<component-type>org.jboss.seam.pdf.ui.UIChartData</component-type>
<component-class>org.jboss.seam.pdf.ui.UIChartData</component-class>
</component>
Modified: trunk/src/pdf/META-INF/seam-pdf.taglib.xml
===================================================================
--- trunk/src/pdf/META-INF/seam-pdf.taglib.xml 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/META-INF/seam-pdf.taglib.xml 2009-02-16 23:47:23 UTC (rev 10051)
@@ -168,6 +168,13 @@
</tag>
<tag>
+ <tag-name>timeserieschart</tag-name>
+ <component>
+ <component-type>org.jboss.seam.pdf.ui.UITimeSeriesChart</component-type>
+ </component>
+ </tag>
+
+ <tag>
<tag-name>data</tag-name>
<component>
<component-type>org.jboss.seam.pdf.ui.UIChartData</component-type>
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UIBarChart.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UIBarChart.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UIBarChart.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -12,8 +12,6 @@
public class UIBarChart extends UICategoryChartBase
{
- private CategoryDataset dataset;
-
@Override
public void restoreState(FacesContext context, Object state)
{
@@ -31,9 +29,9 @@
}
@Override
- public void createDataset()
+ public Dataset createDataset()
{
- dataset = new DefaultCategoryDataset();
+ return new DefaultCategoryDataset();
}
// @Override
@@ -62,11 +60,11 @@
if (!getIs3D())
{
- chart = ChartFactory.createBarChart(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), dataset, plotOrientation(getOrientation()), getLegend(), false, false);
+ chart = ChartFactory.createBarChart(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), (CategoryDataset) dataset, plotOrientation(getOrientation()), getLegend(), false, false);
}
else
{
- chart = ChartFactory.createBarChart3D(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), dataset, plotOrientation(getOrientation()), getLegend(), false, false);
+ chart = ChartFactory.createBarChart3D(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), (CategoryDataset) dataset, plotOrientation(getOrientation()), getLegend(), false, false);
}
configureTitle(chart.getTitle());
@@ -74,10 +72,4 @@
return chart;
}
-
- @Override
- public Dataset getDataset()
- {
- return dataset;
- }
}
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UICategoryChartBase.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UICategoryChartBase.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UICategoryChartBase.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -6,23 +6,17 @@
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.block.BlockBorder;
-import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
-import org.jfree.data.category.CategoryDataset;
public abstract class UICategoryChartBase extends UIChart {
private static Log log = Logging.getLog(UICategoryChartBase.class);
private String orientation;
- private boolean legend;
- private boolean is3D = false;
-
- private String title;
private String titleBackgroundPaint;
private String titlePaint;
@@ -67,14 +61,6 @@
this.domainLabelPosition = domainLabelPosition;
}
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getTitle() {
- return (String) valueBinding("title", title);
- }
-
public void setOrientation(String orientation) {
this.orientation = orientation;
}
@@ -83,22 +69,6 @@
return (String) valueBinding("orientation", orientation);
}
- public void setLegend(boolean legend) {
- this.legend = legend;
- }
-
- public boolean getLegend() {
- return (Boolean) valueBinding("legend", legend);
- }
-
- public void setIs3D(boolean is3D) {
- this.is3D = true;
- }
-
- public boolean getIs3D() {
- return (Boolean) valueBinding("is3D", is3D);
- }
-
public void setTitleBackgroundPaint(String titleBackgroundPaint) {
this.titleBackgroundPaint = titleBackgroundPaint;
}
@@ -215,9 +185,8 @@
super.restoreState(context, values[0]);
orientation = (String) values[1];
- legend = (Boolean) values[2];
- is3D = (Boolean) values[3];
- title = (String) values[4];
+ //legend = (Boolean) values[2];
+ //is3D = (Boolean) values[3];
titleBackgroundPaint = (String) values[5];
titlePaint = (String) values[6];
legendBackgroundPaint = (String) values[7];
@@ -241,9 +210,9 @@
Object[] values = new Object[21];
values[0] = super.saveState(context);
values[1] = orientation;
- values[2] = legend;
- values[3] = is3D;
- values[4] = title;
+ //values[2] = legend;
+ //values[3] = is3D;
+ //values[4] = title;
values[5] = titleBackgroundPaint;
values[6] = titlePaint;
values[7] = legendBackgroundPaint;
@@ -374,8 +343,7 @@
public void configureTitle(TextTitle chartTitle) {
if (chartTitle != null) {
if (findColor(getTitleBackgroundPaint()) != null) {
- chartTitle
- .setBackgroundPaint(findColor(getTitleBackgroundPaint()));
+ chartTitle.setBackgroundPaint(findColor(getTitleBackgroundPaint()));
}
if (findColor(getTitlePaint()) != null) {
@@ -391,7 +359,7 @@
}
if (findColor(getLegendOutlinePaint()) != null) {
- chartLegend.setBorder(new BlockBorder(findColor(getLegendOutlinePaint())));
+ chartLegend.setFrame(new BlockBorder(findColor(getLegendOutlinePaint())));
}
if (findColor(getLegendItemPaint()) != null) {
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UIChart.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UIChart.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UIChart.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -32,11 +32,16 @@
{
private Image image = null;
private JFreeChart chart = null;
+
private byte[] imageData;
private int height = 300;
private int width = 400;
+ private boolean legend;
+ private boolean is3D = false;
+
+ private String title;
private String borderBackgroundPaint;
private String borderPaint;
private String borderStroke;
@@ -48,6 +53,18 @@
private String plotOutlineStroke;
private String plotOutlinePaint;
+ protected Dataset dataset;
+
+
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getTitle() {
+ return (String) valueBinding("title", title);
+ }
+
public void setHeight(int height)
{
this.height = height;
@@ -67,7 +84,24 @@
{
return (Integer) valueBinding(FacesContext.getCurrentInstance(), "width", width);
}
+
+ public void setLegend(boolean legend) {
+ this.legend = legend;
+ }
+ public boolean getLegend() {
+ return (Boolean) valueBinding("legend", legend);
+ }
+
+ public void setIs3D(boolean is3D) {
+ this.is3D = true;
+ }
+
+ public boolean getIs3D() {
+ return (Boolean) valueBinding("is3D", is3D);
+ }
+
+
public void setBorderBackgroundPaint(String backgroundPaint)
{
this.borderBackgroundPaint = backgroundPaint;
@@ -158,6 +192,14 @@
return (String) valueBinding(FacesContext.getCurrentInstance(), "plotOutlineStroke", plotOutlineStroke);
}
+ public void setDataset(Dataset dataset) {
+ this.dataset = dataset;
+ }
+
+ public Dataset getDataset() {
+ return (Dataset) valueBinding(FacesContext.getCurrentInstance(), "dataset", dataset);
+ }
+
@Override
public void restoreState(FacesContext context, Object state)
{
@@ -175,12 +217,15 @@
plotForegroundAlpha = (Float) values[9];
plotOutlineStroke = (String) values[10];
plotOutlinePaint = (String) values[11];
+ title = (String) values[12];
+ is3D = (Boolean) values[13];
+ legend = (Boolean) values[14];
}
@Override
public Object saveState(FacesContext context)
{
- Object[] values = new Object[12];
+ Object[] values = new Object[15];
values[0] = super.saveState(context);
values[1] = height;
@@ -194,7 +239,10 @@
values[9] = plotForegroundAlpha;
values[10] = plotOutlineStroke;
values[11] = plotOutlinePaint;
-
+ values[12] = title;
+ values[13] = is3D;
+ values[14] = legend;
+
return values;
}
@@ -345,8 +393,11 @@
@Override
public void encodeBegin(FacesContext context) throws IOException
{
+ dataset = getDataset();
// bypass super to avoid createITextObject() before the chart is ready
- createDataset();
+ if (dataset == null) {
+ dataset = createDataset();
+ }
chart = createChart(context);
}
@@ -394,7 +445,5 @@
chart = null;
}
- public abstract void createDataset();
-
- public abstract Dataset getDataset();
+ public abstract Dataset createDataset();
}
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartData.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartData.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartData.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -166,6 +166,9 @@
// CategoryPlot plot = (CategoryPlot)
// chart.getChart().getPlot();
data.addValue(getNumericValue(), getSeries(), getKey());
+// } else if (dataset instanceof DefaultXYDataset) {
+// DefaultXYDataset data = (DefaultXYDataset) dataset;
+
} else {
throw new RuntimeException(
"Cannot add data to dataset of type "
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartSeries.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartSeries.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UIChartSeries.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -142,7 +142,11 @@
} else {
log.error("render is not AbtractRenderer" + renderer);
}
+
}
+// else if (p instanceof XYPlot) {
+// /// ???
+// }
}
}
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UILineChart.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -11,8 +11,6 @@
public class UILineChart extends UICategoryChartBase
{
- CategoryDataset dataset;
-
@Override
public void restoreState(FacesContext context, Object state)
{
@@ -31,9 +29,9 @@
}
@Override
- public void createDataset()
+ public Dataset createDataset()
{
- dataset = new DefaultCategoryDataset();
+ return new DefaultCategoryDataset();
}
@Override
@@ -43,11 +41,11 @@
if (!getIs3D())
{
- chart = ChartFactory.createLineChart(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), dataset, plotOrientation(getOrientation()), getLegend(), false, false);
+ chart = ChartFactory.createLineChart(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), (CategoryDataset) dataset, plotOrientation(getOrientation()), getLegend(), false, false);
}
else
{
- chart = ChartFactory.createLineChart3D(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), dataset, plotOrientation(getOrientation()), getLegend(), false, false);
+ chart = ChartFactory.createLineChart3D(getTitle(), getDomainAxisLabel(), getRangeAxisLabel(), (CategoryDataset) dataset, plotOrientation(getOrientation()), getLegend(), false, false);
}
configureTitle(chart.getTitle());
@@ -67,10 +65,5 @@
super.configureRenderer(renderer);
}
- @Override
- public Dataset getDataset()
- {
- return dataset;
- }
}
Modified: trunk/src/pdf/org/jboss/seam/pdf/ui/UIPieChart.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UIPieChart.java 2009-02-16 21:44:26 UTC (rev 10050)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UIPieChart.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -9,464 +9,358 @@
import org.jfree.chart.plot.Plot;
import org.jfree.data.general.Dataset;
import org.jfree.data.general.DefaultPieDataset;
+import org.jfree.data.general.PieDataset;
import org.jfree.util.Rotation;
-public class UIPieChart extends UIChart
+public class UIPieChart
+ extends UIChart
{
- private DefaultPieDataset data;
+ private String label;
- private String title;
- private String label;
- private boolean legend = true;
- private boolean is3D = false;
+ private Double labelLinkMargin;
+ private String labelLinkPaint;
+ private String labelLinkStroke;
+ private Boolean labelLinksVisible;
+ private String labelOutlinePaint;
+ private String labelOutlineStroke;
+ private String labelShadowPaint;
+ private String labelPaint;
+ private Double labelGap;
+ private String labelBackgroundPaint;
+ private Double startAngle;
+ private Boolean circular;
+ private String direction;
+ private String sectionOutlinePaint;
+ private String sectionOutlineStroke;
+ private Boolean sectionOutlinesVisible;
+ private String baseSectionOutlinePaint;
+ private String baseSectionPaint;
+ private String baseSectionOutlineStroke;
- private Double labelLinkMargin;
- private String labelLinkPaint;
- private String labelLinkStroke;
- private Boolean labelLinksVisible;
- private String labelOutlinePaint;
- private String labelOutlineStroke;
- private String labelShadowPaint;
- private String labelPaint;
- private Double labelGap;
- private String labelBackgroundPaint;
- private Double startAngle;
- private Boolean circular;
- private String direction;
- private String sectionOutlinePaint;
- private String sectionOutlineStroke;
- private Boolean sectionOutlinesVisible;
- private String baseSectionOutlinePaint;
- private String baseSectionPaint;
- private String baseSectionOutlineStroke;
+ public void setLabel(String label) {
+ this.label = label;
+ }
- public void setTitle(String title)
- {
- this.title = title;
- }
+ public String getLabel() {
+ return (String) valueBinding("label", label);
+ }
- public String getTitle()
- {
- return (String) valueBinding("title", title);
- }
- public void setLabel(String label)
- {
- this.label = label;
- }
+ public String getBaseSectionOutlinePaint() {
+ return (String) valueBinding("baseSectionOutlinePaint",
+ baseSectionOutlinePaint);
+ }
- public String getLabel()
- {
- return (String) valueBinding("label", label);
- }
+ public void setBaseSectionOutlinePaint(String baseSectionOutlinePaint) {
+ this.baseSectionOutlinePaint = baseSectionOutlinePaint;
+ }
- public void setLegend(boolean legend)
- {
- this.legend = legend;
- }
+ public String getBaseSectionOutlineStroke() {
+ return (String) valueBinding("baseSectionOutlineStroke",
+ baseSectionOutlineStroke);
+ }
- public boolean getLegend()
- {
- return (Boolean) valueBinding("legend", legend);
- }
+ public void setBaseSectionOutlineStroke(String baseSectionOutlineStroke) {
+ this.baseSectionOutlineStroke = baseSectionOutlineStroke;
+ }
- public void setIs3D(boolean is3D)
- {
- this.is3D = true;
- }
+ public String getBaseSectionPaint() {
+ return (String) valueBinding("baseSectionPaint", baseSectionPaint);
+ }
- public boolean getIs3D()
- {
- return (Boolean) valueBinding("is3D", is3D);
- }
+ public void setBaseSectionPaint(String baseSectionPaint) {
+ this.baseSectionPaint = baseSectionPaint;
+ }
- public String getBaseSectionOutlinePaint()
- {
- return (String) valueBinding("baseSectionOutlinePaint", baseSectionOutlinePaint);
- }
+ public Boolean getCircular() {
+ return (Boolean) valueBinding("isCircular", circular);
+ }
- public void setBaseSectionOutlinePaint(String baseSectionOutlinePaint)
- {
- this.baseSectionOutlinePaint = baseSectionOutlinePaint;
- }
+ public void setCircular(Boolean circular) {
+ this.circular = circular;
+ }
- public String getBaseSectionOutlineStroke()
- {
- return (String) valueBinding("baseSectionOutlineStroke", baseSectionOutlineStroke);
- }
+ public String getLabelBackgroundPaint() {
+ return (String) valueBinding("labelBackgroundPaint",
+ labelBackgroundPaint);
+ }
- public void setBaseSectionOutlineStroke(String baseSectionOutlineStroke)
- {
- this.baseSectionOutlineStroke = baseSectionOutlineStroke;
- }
+ public void setLabelBackgroundPaint(String labelBackgroundPaint) {
+ this.labelBackgroundPaint = labelBackgroundPaint;
+ }
- public String getBaseSectionPaint()
- {
- return (String) valueBinding("baseSectionPaint", baseSectionPaint);
- }
+ public Double getLabelGap() {
+ return (Double) valueBinding("labelGap", labelGap);
+ }
- public void setBaseSectionPaint(String baseSectionPaint)
- {
- this.baseSectionPaint = baseSectionPaint;
- }
+ public void setLabelGap(Double labelGap) {
+ this.labelGap = labelGap;
+ }
- public Boolean getCircular()
- {
- return (Boolean) valueBinding("isCircular", circular);
- }
+ public Double getLabelLinkMargin() {
+ return (Double) valueBinding("labelLinkMargin", labelLinkMargin);
+ }
- public void setCircular(Boolean circular)
- {
- this.circular = circular;
- }
+ public void setLabelLinkMargin(double labelLinkMargin) {
+ this.labelLinkMargin = labelLinkMargin;
+ }
- public String getLabelBackgroundPaint()
- {
- return (String) valueBinding("labelBackgroundPaint", labelBackgroundPaint);
- }
+ public String getLabelLinkPaint() {
+ return (String) valueBinding("labelLinkPaint", labelLinkPaint);
+ }
- public void setLabelBackgroundPaint(String labelBackgroundPaint)
- {
- this.labelBackgroundPaint = labelBackgroundPaint;
- }
+ public void setLabelLinkPaint(String labelLinkPaint) {
+ this.labelLinkPaint = labelLinkPaint;
+ }
- public Double getLabelGap()
- {
- return (Double) valueBinding("labelGap", labelGap);
- }
+ public String getLabelLinkStroke() {
+ return (String) valueBinding("labelLinkStroke", labelLinkStroke);
+ }
- public void setLabelGap(Double labelGap)
- {
- this.labelGap = labelGap;
- }
+ public void setLabelLinkStroke(String labelLinkStroke) {
+ this.labelLinkStroke = labelLinkStroke;
+ }
- public Double getLabelLinkMargin()
- {
- return (Double) valueBinding("labelLinkMargin", labelLinkMargin);
- }
+ public Boolean isLabelLinksVisible() {
+ return (Boolean) valueBinding("labelLinksVisible", labelLinksVisible);
+ }
- public void setLabelLinkMargin(double labelLinkMargin)
- {
- this.labelLinkMargin = labelLinkMargin;
- }
+ public void setLabelLinksVisible(Boolean labelLinksVisible) {
+ this.labelLinksVisible = labelLinksVisible;
+ }
- public String getLabelLinkPaint()
- {
- return (String) valueBinding("labelLinkPaint", labelLinkPaint);
- }
+ public String getLabelOutlinePaint() {
+ return (String) valueBinding("labelOutlinePaint", labelOutlinePaint);
+ }
- public void setLabelLinkPaint(String labelLinkPaint)
- {
- this.labelLinkPaint = labelLinkPaint;
- }
+ public void setLabelOutlinePaint(String labelOutlinePaint) {
+ this.labelOutlinePaint = labelOutlinePaint;
+ }
- public String getLabelLinkStroke()
- {
- return (String) valueBinding("labelLinkStroke", labelLinkStroke);
- }
+ public String getLabelOutlineStroke() {
+ return (String) valueBinding("labelOutlineStroke", labelOutlineStroke);
+ }
- public void setLabelLinkStroke(String labelLinkStroke)
- {
- this.labelLinkStroke = labelLinkStroke;
- }
+ public void setLabelOutlineStroke(String labelOutlineStroke) {
+ this.labelOutlineStroke = labelOutlineStroke;
+ }
- public Boolean isLabelLinksVisible()
- {
- return (Boolean) valueBinding("labelLinksVisible", labelLinksVisible);
- }
+ public String getLabelPaint() {
+ return (String) valueBinding("labelPaint", labelPaint);
+ }
- public void setLabelLinksVisible(Boolean labelLinksVisible)
- {
- this.labelLinksVisible = labelLinksVisible;
- }
+ public void setLabelPaint(String labelPaint) {
+ this.labelPaint = labelPaint;
+ }
- public String getLabelOutlinePaint()
- {
- return (String) valueBinding("labelOutlinePaint", labelOutlinePaint);
- }
+ public String getLabelShadowPaint() {
+ return (String) valueBinding("labelShadowPaint", labelShadowPaint);
+ }
- public void setLabelOutlinePaint(String labelOutlinePaint)
- {
- this.labelOutlinePaint = labelOutlinePaint;
- }
+ public void setLabelShadowPaint(String labelShadowPaint) {
+ this.labelShadowPaint = labelShadowPaint;
+ }
- public String getLabelOutlineStroke()
- {
- return (String) valueBinding("labelOutlineStroke", labelOutlineStroke);
- }
+ public String getDirection() {
+ return (String) valueBinding("rotation", direction);
+ }
- public void setLabelOutlineStroke(String labelOutlineStroke)
- {
- this.labelOutlineStroke = labelOutlineStroke;
- }
+ public void setDirection(String rotation) {
+ this.direction = rotation;
+ }
- public String getLabelPaint()
- {
- return (String) valueBinding("labelPaint", labelPaint);
- }
+ public String getSectionOutlinePaint() {
+ return (String) valueBinding("sectionOutlinePaint", sectionOutlinePaint);
+ }
- public void setLabelPaint(String labelPaint)
- {
- this.labelPaint = labelPaint;
- }
+ public void setSectionOutlinePaint(String sectionOutlinePaint) {
+ this.sectionOutlinePaint = sectionOutlinePaint;
+ }
- public String getLabelShadowPaint()
- {
- return (String) valueBinding("labelShadowPaint", labelShadowPaint);
- }
+ public String getSectionOutlineStroke() {
+ return (String) valueBinding("sectionOutlineStroke",
+ sectionOutlineStroke);
+ }
- public void setLabelShadowPaint(String labelShadowPaint)
- {
- this.labelShadowPaint = labelShadowPaint;
- }
+ public void setSectionOutlineStroke(String sectionOutlineStroke) {
+ this.sectionOutlineStroke = sectionOutlineStroke;
+ }
- public String getDirection()
- {
- return (String) valueBinding("rotation", direction);
- }
+ public Boolean isSectionOutlinesVisible() {
+ return (Boolean) valueBinding("sectionOutlineVisible",
+ sectionOutlinesVisible);
+ }
- public void setDirection(String rotation)
- {
- this.direction = rotation;
- }
+ public void setSectionOutlinesVisible(Boolean sectionOutlinesVisible) {
+ this.sectionOutlinesVisible = sectionOutlinesVisible;
+ }
- public String getSectionOutlinePaint()
- {
- return (String) valueBinding("sectionOutlinePaint", sectionOutlinePaint);
- }
+ public Double getStartAngle() {
+ return (Double) valueBinding("startAngle", startAngle);
+ }
- public void setSectionOutlinePaint(String sectionOutlinePaint)
- {
- this.sectionOutlinePaint = sectionOutlinePaint;
- }
+ public void setStartAngle(Double startAngle) {
+ this.startAngle = startAngle;
+ }
- public String getSectionOutlineStroke()
- {
- return (String) valueBinding("sectionOutlineStroke", sectionOutlineStroke);
- }
+ @Override
+ public void restoreState(FacesContext context, Object state) {
+ Object[] values = (Object[]) state;
+ super.restoreState(context, values[0]);
- public void setSectionOutlineStroke(String sectionOutlineStroke)
- {
- this.sectionOutlineStroke = sectionOutlineStroke;
- }
+ // title = (String) values[1];
+ label = (String) values[2];
+ //legend = (Boolean) values[3];
+ //is3D = (Boolean) values[4];
+ labelLinkMargin = (Double) values[5];
+ labelLinkPaint = (String) values[6];
+ labelLinkStroke = (String) values[7];
+ labelLinksVisible = (Boolean) values[8];
+ labelOutlinePaint = (String) values[9];
+ labelOutlineStroke = (String) values[10];
+ labelShadowPaint = (String) values[11];
+ labelPaint = (String) values[12];
+ labelGap = (Double) values[13];
+ labelBackgroundPaint = (String) values[14];
+ startAngle = (Double) values[15];
+ circular = (Boolean) values[16];
+ direction = (String) values[17];
+ sectionOutlinePaint = (String) values[18];
+ sectionOutlineStroke = (String) values[19];
+ sectionOutlinesVisible = (Boolean) values[20];
+ baseSectionOutlinePaint = (String) values[21];
+ baseSectionPaint = (String) values[22];
+ baseSectionOutlineStroke = (String) values[23];
+ }
- public Boolean isSectionOutlinesVisible()
- {
- return (Boolean) valueBinding("sectionOutlineVisible", sectionOutlinesVisible);
- }
+ @Override
+ public Object saveState(FacesContext context) {
+ Object[] values = new Object[24];
- public void setSectionOutlinesVisible(Boolean sectionOutlinesVisible)
- {
- this.sectionOutlinesVisible = sectionOutlinesVisible;
- }
+ values[0] = super.saveState(context);
+ // values[1] = title;
+ values[2] = label;
+ //values[3] = legend;
+ //values[4] = is3D;
+ values[5] = labelLinkMargin;
+ values[6] = labelLinkPaint;
+ values[7] = labelLinkStroke;
+ values[8] = labelLinksVisible;
+ values[9] = labelOutlinePaint;
+ values[10] = labelOutlineStroke;
+ values[11] = labelShadowPaint;
+ values[12] = labelPaint;
+ values[13] = labelGap;
+ values[14] = labelBackgroundPaint;
+ values[15] = startAngle;
+ values[16] = circular;
+ values[17] = direction;
+ values[18] = sectionOutlinePaint;
+ values[19] = sectionOutlineStroke;
+ values[20] = sectionOutlinesVisible;
+ values[21] = baseSectionOutlinePaint;
+ values[22] = baseSectionPaint;
+ values[23] = baseSectionOutlineStroke;
- public Double getStartAngle()
- {
- return (Double) valueBinding("startAngle", startAngle);
- }
+ return values;
+ }
- public void setStartAngle(Double startAngle)
- {
- this.startAngle = startAngle;
- }
+ @Override
+ public Dataset createDataset() {
+ return new DefaultPieDataset();
+ }
- @Override
- public void restoreState(FacesContext context, Object state)
- {
- Object[] values = (Object[]) state;
- super.restoreState(context, values[0]);
+ public Rotation rotationValue(String value) {
+ if (value == null || value.equalsIgnoreCase("anticlockwise")) {
+ return Rotation.ANTICLOCKWISE;
+ } else {
+ return Rotation.CLOCKWISE;
+ }
+ }
- title = (String) values[1];
- label = (String) values[2];
- legend = (Boolean) values[3];
- is3D = (Boolean) values[4];
- labelLinkMargin = (Double) values[5];
- labelLinkPaint = (String) values[6];
- labelLinkStroke = (String) values[7];
- labelLinksVisible = (Boolean) values[8];
- labelOutlinePaint = (String) values[9];
- labelOutlineStroke = (String) values[10];
- labelShadowPaint = (String) values[11];
- labelPaint = (String) values[12];
- labelGap = (Double) values[13];
- labelBackgroundPaint = (String) values[14];
- startAngle = (Double) values[15];
- circular = (Boolean) values[16];
- direction = (String) values[17];
- sectionOutlinePaint = (String) values[18];
- sectionOutlineStroke = (String) values[19];
- sectionOutlinesVisible = (Boolean) values[20];
- baseSectionOutlinePaint = (String) values[21];
- baseSectionPaint = (String) values[22];
- baseSectionOutlineStroke = (String) values[23];
- }
+ @Override
+ public void configurePlot(Plot plot) {
+ super.configurePlot(plot);
- @Override
- public Object saveState(FacesContext context)
- {
- Object[] values = new Object[24];
+ if (plot instanceof PiePlot) {
+ PiePlot pieplot = (PiePlot) plot;
+ if (label != null) {
+ pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(label));
+ }
- values[0] = super.saveState(context);
- values[1] = title;
- values[2] = label;
- values[3] = legend;
- values[4] = is3D;
- values[5] = labelLinkMargin;
- values[6] = labelLinkPaint;
- values[7] = labelLinkStroke;
- values[8] = labelLinksVisible;
- values[9] = labelOutlinePaint;
- values[10] = labelOutlineStroke;
- values[11] = labelShadowPaint;
- values[12] = labelPaint;
- values[13] = labelGap;
- values[14] = labelBackgroundPaint;
- values[15] = startAngle;
- values[16] = circular;
- values[17] = direction;
- values[18] = sectionOutlinePaint;
- values[19] = sectionOutlineStroke;
- values[20] = sectionOutlinesVisible;
- values[21] = baseSectionOutlinePaint;
- values[22] = baseSectionPaint;
- values[23] = baseSectionOutlineStroke;
+ if (baseSectionOutlinePaint != null) {
+ pieplot.setBaseSectionOutlinePaint(findColor(baseSectionOutlinePaint));
+ }
+ if (baseSectionOutlineStroke != null) {
+ pieplot.setBaseSectionOutlineStroke(findStroke(baseSectionOutlineStroke));
+ }
+ if (baseSectionPaint != null) {
+ pieplot.setBaseSectionPaint(findColor(baseSectionPaint));
+ }
- return values;
- }
+ if (circular != null) {
+ pieplot.setCircular(circular);
+ }
+ if (startAngle != null) {
+ pieplot.setStartAngle(startAngle);
+ }
+ if (direction != null) {
+ pieplot.setDirection(rotationValue(direction));
+ }
- @Override
- public void createDataset()
- {
- data = new DefaultPieDataset();
- }
+ if (sectionOutlinePaint != null) {
+ pieplot
+ .setBaseSectionOutlinePaint(findColor(sectionOutlinePaint));
+ }
+ if (sectionOutlineStroke != null) {
+ pieplot
+ .setBaseSectionOutlineStroke(findStroke(sectionOutlineStroke));
+ }
+ if (sectionOutlinesVisible != null) {
+ pieplot.setSectionOutlinesVisible(sectionOutlinesVisible);
+ }
- @Override
- public Dataset getDataset()
- {
- return data;
- }
+ // pieplot.setLabelFont(arg0);
+ if (labelBackgroundPaint != null) {
+ pieplot.setLabelBackgroundPaint(findColor(labelBackgroundPaint));
+ }
+ if (labelGap != null) {
+ pieplot.setLabelGap(labelGap);
+ }
+ if (labelLinkMargin != null) {
+ pieplot.setLabelLinkMargin(labelLinkMargin);
+ }
+ if (labelLinkPaint != null) {
+ pieplot.setLabelLinkPaint(findColor(labelLinkPaint));
+ }
+ if (labelLinkStroke != null) {
+ pieplot.setLabelLinkStroke(findStroke(labelLinkStroke));
+ }
+ if (labelLinksVisible != null) {
+ pieplot.setLabelLinksVisible(labelLinksVisible);
+ }
+ if (labelOutlinePaint != null) {
+ pieplot.setLabelOutlinePaint(findColor(labelOutlinePaint));
+ }
+ if (labelOutlineStroke != null) {
+ pieplot.setLabelOutlineStroke(findStroke(labelOutlineStroke));
+ }
+ if (labelPaint != null) {
+ pieplot.setLabelPaint(findColor(labelPaint));
+ }
+ if (labelShadowPaint != null) {
+ pieplot.setLabelShadowPaint(findColor(labelShadowPaint));
+ }
+ }
+ }
- public Rotation rotationValue(String value)
- {
- if (value == null || value.equalsIgnoreCase("anticlockwise"))
- {
- return Rotation.ANTICLOCKWISE;
- }
- else
- {
- return Rotation.CLOCKWISE;
- }
- }
+ @Override
+ public JFreeChart createChart(FacesContext context) {
- @Override
- public void configurePlot(Plot plot)
- {
- super.configurePlot(plot);
-
- if (plot instanceof PiePlot)
- {
- PiePlot pieplot = (PiePlot) plot;
- if (label != null)
- {
- pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(label));
- }
-
- if (baseSectionOutlinePaint != null)
- {
- pieplot.setBaseSectionOutlinePaint(findColor(baseSectionOutlinePaint));
- }
- if (baseSectionOutlineStroke != null)
- {
- pieplot.setBaseSectionOutlineStroke(findStroke(baseSectionOutlineStroke));
- }
- if (baseSectionPaint != null)
- {
- pieplot.setBaseSectionPaint(findColor(baseSectionPaint));
- }
-
- if (circular != null)
- {
- pieplot.setCircular(circular);
- }
- if (startAngle != null)
- {
- pieplot.setStartAngle(startAngle);
- }
- if (direction != null)
- {
- pieplot.setDirection(rotationValue(direction));
- }
-
- if (sectionOutlinePaint != null)
- {
- pieplot.setSectionOutlinePaint(findColor(sectionOutlinePaint));
- }
- if (sectionOutlineStroke != null)
- {
- pieplot.setSectionOutlineStroke(findStroke(sectionOutlineStroke));
- }
- if (sectionOutlinesVisible != null)
- {
- pieplot.setSectionOutlinesVisible(sectionOutlinesVisible);
- }
-
- // pieplot.setLabelFont(arg0);
- if (labelBackgroundPaint != null)
- {
- pieplot.setLabelBackgroundPaint(findColor(labelBackgroundPaint));
- }
- if (labelGap != null)
- {
- pieplot.setLabelGap(labelGap);
- }
- if (labelLinkMargin != null)
- {
- pieplot.setLabelLinkMargin(labelLinkMargin);
- }
- if (labelLinkPaint != null)
- {
- pieplot.setLabelLinkPaint(findColor(labelLinkPaint));
- }
- if (labelLinkStroke != null)
- {
- pieplot.setLabelLinkStroke(findStroke(labelLinkStroke));
- }
- if (labelLinksVisible != null)
- {
- pieplot.setLabelLinksVisible(labelLinksVisible);
- }
- if (labelOutlinePaint != null)
- {
- pieplot.setLabelOutlinePaint(findColor(labelOutlinePaint));
- }
- if (labelOutlineStroke != null)
- {
- pieplot.setLabelOutlineStroke(findStroke(labelOutlineStroke));
- }
- if (labelPaint != null)
- {
- pieplot.setLabelPaint(findColor(labelPaint));
- }
- if (labelShadowPaint != null)
- {
- pieplot.setLabelShadowPaint(findColor(labelShadowPaint));
- }
-
- }
- }
-
- @Override
- public JFreeChart createChart(FacesContext context)
- {
- legend = (Boolean) valueBinding(context, "legend", getLegend());
-
- if (!is3D)
- {
- return ChartFactory.createPieChart(getTitle(), data, legend, false, false);
- }
- else
- {
- return ChartFactory.createPieChart3D(getTitle(), data, legend, false, false);
- }
- }
+ if (!getIs3D()) {
+ return ChartFactory.createPieChart(getTitle(), (PieDataset) dataset, getLegend(), false, false);
+ } else {
+ return ChartFactory.createPieChart3D(getTitle(), (PieDataset) dataset, getLegend(), false, false);
+ }
+ }
}
Added: trunk/src/pdf/org/jboss/seam/pdf/ui/UITimeSeriesChart.java
===================================================================
--- trunk/src/pdf/org/jboss/seam/pdf/ui/UITimeSeriesChart.java (rev 0)
+++ trunk/src/pdf/org/jboss/seam/pdf/ui/UITimeSeriesChart.java 2009-02-16 23:47:23 UTC (rev 10051)
@@ -0,0 +1,188 @@
+package org.jboss.seam.pdf.ui;
+
+import javax.faces.context.FacesContext;
+
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.JFreeChart;
+import org.jfree.data.general.Dataset;
+import org.jfree.data.xy.DefaultXYDataset;
+import org.jfree.data.xy.XYDataset;
+
+public class UITimeSeriesChart
+ extends UIChart
+{
+ private String domainAxisLabel;
+ private String domainLabelPosition;
+ private String domainAxisPaint;
+ private Boolean domainGridlinesVisible;
+ private String domainGridlinePaint;
+ private String domainGridlineStroke;
+
+ private String rangeAxisLabel;
+ private String rangeAxisPaint;
+ private Boolean rangeGridlinesVisible;
+ private String rangeGridlinePaint;
+ private String rangeGridlineStroke;
+
+ public String getDomainAxisLabel() {
+ return (String) valueBinding("domainAxisLabel", domainAxisLabel);
+ }
+
+ public void setDomainAxisLabel(String categoryAxisLabel) {
+ this.domainAxisLabel = categoryAxisLabel;
+ }
+
+ public String getRangeAxisLabel() {
+ return (String) valueBinding("rangeAxisLabel", rangeAxisLabel);
+ }
+
+ public void setRangeAxisLabel(String valueAxisLabel) {
+ this.rangeAxisLabel = valueAxisLabel;
+ }
+
+ public String getDomainLabelPosition() {
+ return (String) valueBinding("domainLabelPosition", domainLabelPosition);
+ }
+
+ public void setDomainLabelPosition(String domainLabelPosition) {
+ this.domainLabelPosition = domainLabelPosition;
+ }
+
+ public String getDomainGridlinePaint() {
+ return (String) valueBinding("domainGridlinePaint", domainGridlinePaint);
+ }
+
+ public void setDomainGridlinePaint(String domainGridlinePaint) {
+ this.domainGridlinePaint = domainGridlinePaint;
+ }
+
+ public String getDomainGridlineStroke() {
+ return (String) valueBinding("domainGridlineStroke",
+ domainGridlineStroke);
+ }
+
+ public void setDomainGridlineStroke(String domainGridlineStroke) {
+ this.domainGridlineStroke = domainGridlineStroke;
+ }
+
+ public Boolean getDomainGridlinesVisible() {
+ return (Boolean) valueBinding("domainGridlinesVisible",
+ domainGridlinesVisible);
+ }
+
+ public void setDomainGridlinesVisible(Boolean domainGridlinesVisible) {
+ this.domainGridlinesVisible = domainGridlinesVisible;
+ }
+
+ public String getRangeGridlinePaint() {
+ return (String) valueBinding("rangeGridlinePaint", rangeGridlinePaint);
+ }
+
+ public void setRangeGridlinePaint(String rangeGridlinePaint) {
+ this.rangeGridlinePaint = rangeGridlinePaint;
+ }
+
+ public String getRangeGridlineStroke() {
+ return (String) valueBinding("rangeGridlineStroke", rangeGridlineStroke);
+ }
+
+ public void setRangeGridlineStroke(String rangeGridlineStroke) {
+ this.rangeGridlineStroke = rangeGridlineStroke;
+ }
+
+ public Boolean getRangeGridlinesVisible() {
+ return (Boolean) valueBinding("rangeGridlinesVisible",
+ rangeGridlinesVisible);
+ }
+
+ public void setRangeGridlinesVisible(Boolean rangeGridlinesVisible) {
+ this.rangeGridlinesVisible = rangeGridlinesVisible;
+ }
+
+ public String getDomainAxisPaint() {
+ return (String) valueBinding("domainAxisPaint", domainAxisPaint);
+ }
+
+ public void setDomainAxisPaint(String domainAxisPaint) {
+ this.domainAxisPaint = domainAxisPaint;
+ }
+
+ public String getRangeAxisPaint() {
+ return (String) valueBinding("rangeAxisPaint", rangeAxisPaint);
+ }
+
+ public void setRangeAxisPaint(String rangeAxisPaint) {
+ this.rangeAxisPaint = rangeAxisPaint;
+ }
+
+ @Override
+ public void restoreState(FacesContext context, Object state) {
+ Object[] values = (Object[]) state;
+
+ super.restoreState(context, values[0]);
+
+ //orientation = (String) values[1];
+ //legend = (Boolean) values[2];
+ //is3D = (Boolean) values[3];
+// titleBackgroundPaint = (String) values[5];
+// titlePaint = (String) values[6];
+// legendBackgroundPaint = (String) values[7];
+// legendItemPaint = (String) values[8];
+// legendOutlinePaint = (String) values[9];
+ domainAxisLabel = (String) values[10];
+ domainAxisPaint = (String) values[11];
+ domainGridlinesVisible = (Boolean) values[12];
+ domainGridlinePaint = (String) values[13];
+ domainGridlineStroke = (String) values[14];
+ rangeAxisLabel = (String) values[15];
+ rangeAxisPaint = (String) values[16];
+ rangeGridlinesVisible = (Boolean) values[17];
+ rangeGridlinePaint = (String) values[18];
+ rangeGridlineStroke = (String) values[19];
+ domainLabelPosition = (String) values[20];
+ }
+
+ @Override
+ public Object saveState(FacesContext context) {
+ Object[] values = new Object[21];
+ values[0] = super.saveState(context);
+ //values[1] = orientation;
+ //values[2] = legend;
+ //values[3] = is3D;
+ //values[4] = title;
+// values[5] = titleBackgroundPaint;
+// values[6] = titlePaint;
+// values[7] = legendBackgroundPaint;
+// values[8] = legendItemPaint;
+// values[9] = legendOutlinePaint;
+ values[10] = domainAxisLabel;
+ values[11] = domainAxisPaint;
+ values[12] = domainGridlinesVisible;
+ values[13] = domainGridlinePaint;
+ values[14] = domainGridlineStroke;
+ values[15] = rangeAxisLabel;
+ values[16] = rangeAxisPaint;
+ values[17] = rangeGridlinesVisible;
+ values[18] = rangeGridlinePaint;
+ values[19] = rangeGridlineStroke;
+ values[20] = domainLabelPosition;
+
+ return values;
+ }
+ @Override
+ public JFreeChart createChart(FacesContext context)
+ {
+ return ChartFactory.createTimeSeriesChart(getTitle(),
+ getDomainAxisLabel(),
+ getRangeAxisLabel(),
+ (XYDataset) getDataset(),
+ true, false, false);
+
+ }
+
+ @Override
+ public Dataset createDataset() {
+ return new DefaultXYDataset();
+ }
+
+}
15 years, 7 months