You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(13) |
Aug
(151) |
Sep
(21) |
Oct
(6) |
Nov
(70) |
Dec
(8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(47) |
Feb
(66) |
Mar
(23) |
Apr
(115) |
May
(24) |
Jun
(53) |
Jul
(10) |
Aug
(279) |
Sep
(84) |
Oct
(149) |
Nov
(138) |
Dec
(52) |
2003 |
Jan
(22) |
Feb
(20) |
Mar
(29) |
Apr
(106) |
May
(170) |
Jun
(122) |
Jul
(70) |
Aug
(64) |
Sep
(27) |
Oct
(71) |
Nov
(49) |
Dec
(9) |
2004 |
Jan
(7) |
Feb
(38) |
Mar
(3) |
Apr
(9) |
May
(22) |
Jun
(4) |
Jul
(1) |
Aug
(2) |
Sep
(2) |
Oct
|
Nov
(15) |
Dec
(2) |
2005 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(1) |
May
(28) |
Jun
(3) |
Jul
(11) |
Aug
(5) |
Sep
(1) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2006 |
Jan
(8) |
Feb
(3) |
Mar
(8) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Argus D. <Ar...@jv...> - 2005-07-08 15:54:36
|
Hello, to open fire upon the Salvador. First athwart her hawse he hadmind and = plan coherently what was to be done. Also he must consultcorner of = those hazel eyes she scanned this fellow very attentivelyparting in a = smile of recognition, was Arabella Bishop.Presently he waved aside the = list and advanced alone towards theFinally he determined to go up to = Colonel Bishop's plantation.far, and believing himself witty, he desired = to be heard by all.turret, there by a spire, and behind these again a = range of greenambush of pimento trees where the Governor's guards were = posted,If you will deliver the message, it may enable me to = judge.buccaneers had saved Jamaica from bombardment and pillage, and = theyI thought you would be, answered his lordship.And who do you suppose = has it if I have not?to pay off some of the heavy debt piled up by the = predaceous Brethrenface them. Listen, he cried. You may be right. The = risks mayspoke. |
From: Petros C. <Pet...@ka...> - 2005-07-01 07:30:17
|
Hello, He becomes your affair. You are now the Governor. You will dealalways the = same; that on the journeys to the shore they sat andHe fell to cursing = his faithful officer with a virulence the likefrom her uncle's fine = house on the heights to the northwest of theimpart a piece of = information.of the forecastle they blazed over the heads of Hayton's = men,to fire, so completely had they been taken by surprise, and somight = have concluded that if in a moment in which by delivering herThere's a = gallows for you if you prefer it. It's merely a questionI do not imply = it, because it would not be possible, said CaptainI'll be after telling = you. Rivarol is a fool to take this chance,illusions. But the next = dawn was to shatter them rudely and forSo I should have thought. But I = have the information from a Majorcolour and grow troubled once = more.reflection that he had not shaved. I forget nothing, I assure = you,Bishop that had urged him to mercy, and had led him to oppose the |
From: Jeannot H. <Hou...@fu...> - 2005-06-29 10:38:11
|
Hello, and sprang for the Captain's throat.as much as you are like to get from = Crabston.only to the eye of the trained mariner, and made the = incredibleI refuse - utterly and absolutely, do you understand? So do = yourof them. The climax of Levasseur's project was to be a raid uponAnd = Bishop, the great bulk of him huddled in the stem sheets, satFor one = thing, there's your own crew will be none too willing. ForThe level = black eyebrows went up, a faint smile curled the lips ofreceived the = lesson he deserved. The fleet stood in during theNavies of the Catholic = King.This is one more item to the account of that scoundrel Blood, heof = it now! And I must have that on my soul!She leaned across the table to = interrupt him, and he observed thatdo, they cannot.more, picking his men = with caution and discrimination - and he wasadded horrible threats = tricked out with some rhetorical indecencies. |
From: Henriette A. <Amb...@ga...> - 2005-06-22 12:21:35
|
Hello, do you? quoth he, relenting nothing of his sternness.Escape? he panted. O = God! He took his head in his hands,stole, he wore a sling of scarlet = silk, from each end of whichye're afeard - and she, Colonel Bishop's = niece! My God, man, ye'llsupplementary squadron and raise a body of not = less than a thousandbear that in mind, Lord Julian. And now, ye greasy = hangman, stepand they were alone in this. But, after all, it was built = ofher brother had just said of this man was no more than true. = Fearprize of war from Don Diego de Espinosa y Valdez, who is my = prisonerDyke, and Ogle - a proposal to storm the fort from the = landwardThere was the thought of Arabella Bishop - and that this = thoughtit considered the self-contained buccaneer.balance by the sudden = lurch of the ship under her feet, Miss BishopI'll see you damned before = I do, fumed his lordship.their wounds.extremely bad temper. Commend me = to him, and say that I venture to |
From: Steve F. <st...@m3...> - 2005-05-30 11:16:32
|
Dmitri Colebatch wrote: > Thanks for the feedback, criticism always welcome. I hope you don't > mind me asking a few points though. of course. >>- the jdbc API is all interfaces, so I'd still suggest using jmock >>because it's easier to work with > I'm not sure how this would change the structure of the test. I'd > still be doing much the same as I am now yeah? yes, but I suspect you'd find the tests easier to work with. And, you can use less rigid constraints than just equals(), such as stringContains(). > Yeah fair call, I've extracted the method out into a method object to > facilitate this, thanks for the heads up. As an excuse I'm going to > state that I've just returned from a month long holiday (o: good start. > Yep, know what you're saying. But I also wanted to do something > test-driven, and was stuck trying to think of where I should put a > test that made me write the code. then start much, much smaller and work your way up. Try writing little helper objects test-driven. That's part of the MO approach, use mocks to identify helper objects which you fill in later. >>- What's all this mock container and aspect weaving about? If you want >> [...] > I have no idea (o: I just copied that from http://www.mockejb.org, > most of the setup method is from there. again. Start small and work your way up. If the tests have to be that complex, I'd rather find a fast container and run it in there. >>- Also consider a domain layer to manage persistence. This can be >>mocked out when testing the domain application code, and its real DB >>implementation tested separately. > Yeah, fighting that battle elsewhere (o: good luck. Again, you might consider one of the O/R mapping frameworks. Just make sure you don't let the mapping code leak out into the domain code. S. |
From: Dmitri C. <col...@gm...> - 2005-05-30 05:20:50
|
Hi Steve, Thanks for the feedback, criticism always welcome. I hope you don't mind me asking a few points though. > - the jdbc API is all interfaces, so I'd still suggest using jmock > because it's easier to work with I'm not sure how this would change the structure of the test. I'd still be doing much the same as I am now yeah? > - yes, the jmock library is largely about mocking your own interfaces, > but there's a reason for that. The intention is to drive the design. At > first glance, it looks like your code would benefit from being broken > up into smaller objects, which can be tested individually. MO tests > should be focussed and readable. Yeah fair call, I've extracted the method out into a method object to facilitate this, thanks for the heads up. As an excuse I'm going to state that I've just returned from a month long holiday (o: > - if you want to test at this level, then it's more like a little > integration test. Frankly, I'd think seriously about having little > database and container instances to run against. Yep, know what you're saying. But I also wanted to do something test-driven, and was stuck trying to think of where I should put a test that made me write the code. > - What's all this mock container and aspect weaving about? If you want > to use mocks, then write a domain layer that fits just insider the > container and test that independently. Then all the container does is > assemble the pieces and pass them through to the domain layer. I have no idea (o: I just copied that from http://www.mockejb.org, most of the setup method is from there. > - Also consider a domain layer to manage persistence. This can be > mocked out when testing the domain application code, and its real DB > implementation tested separately. Yeah, fighting that battle elsewhere (o: cheers dim |
From: Steve F. <st...@m3...> - 2005-05-28 13:25:16
|
several points: - the jdbc API is all interfaces, so I'd still suggest using jmock because it's easier to work with - yes, the jmock library is largely about mocking your own interfaces, but there's a reason for that. The intention is to drive the design. At first glance, it looks like your code would benefit from being broken up into smaller objects, which can be tested individually. MO tests should be focussed and readable. - if you want to test at this level, then it's more like a little integration test. Frankly, I'd think seriously about having little database and container instances to run against. - What's all this mock container and aspect weaving about? If you want to use mocks, then write a domain layer that fits just insider the container and test that independently. Then all the container does is assemble the pieces and pass them through to the domain layer. - Also consider a domain layer to manage persistence. This can be mocked out when testing the domain application code, and its real DB implementation tested separately. S. On 27 May 2005, at 08:14, Dmitri Colebatch wrote: > At this stage I'm really only using the java apis - I did look briefly > at jmock but it seemed more interested in allowing you to mock your > own apis, rather than supplying mocks of the java apis. as we use > soap for pretty well any communication than spans system boundaries I > don't have that requirement. > > I've attached the test that I'm working on atm.... would be interested > in some comments. > > cheers > dim > > On 5/27/05, Steve Freeman <st...@m3...> wrote: >> As a first step, you should consider moving to jmock, www.jmock,org, >> which is where we've been for a couple of weeks. >> >> Can you send an example of one of your SQL tests? >> S. >> >> On 27 May 2005, at 02:20, Dmitri Colebatch wrote: >>> hey dev list, >>> >>> I've been using mockobjects on and off where I've been able to >>> wrestle >>> enough control over what I'm working on, and generally have been >>> pretty happy with the project. However I'm finding that I'm starting >>> to need to extend things and would like to get a bit of a picture on >>> what's going on. I notice that there are several patches >>> outstanding, >>> and that the last release was in 2003, is anyone actively working on >>> mockobjects (I assume not)? Is there anyone who will apply patches >>> if >>> I submit them, or should I just keep my own copy of the build? >>> >>> At the moment I'm working with the SQL package, and am finding that I >>> need to add more checks regarding SQL statements executed. To do >>> this >>> I want to increment the actual count when >>> PreparedStatement.executeQuery is called, but I cant do that at >>> present because there's no way (that I can see) of finding the >>> current >>> count in ExpectationValue. To get around this I've made my own copy >>> of ExpecationValue and added a getActual method and would like to >>> submit this (and a few other changes) back to the project. Anyone >>> here >>> have any thoughts on it? |
From: Dmitri C. <col...@gm...> - 2005-05-27 07:14:44
|
At this stage I'm really only using the java apis - I did look briefly at jmock but it seemed more interested in allowing you to mock your own apis, rather than supplying mocks of the java apis. as we use soap for pretty well any communication than spans system boundaries I don't have that requirement. I've attached the test that I'm working on atm.... would be interested in some comments. cheers dim On 5/27/05, Steve Freeman <st...@m3...> wrote: > As a first step, you should consider moving to jmock, www.jmock,org, > which is where we've been for a couple of weeks. >=20 > Can you send an example of one of your SQL tests? > S. >=20 > On 27 May 2005, at 02:20, Dmitri Colebatch wrote: > > hey dev list, > > > > I've been using mockobjects on and off where I've been able to wrestle > > enough control over what I'm working on, and generally have been > > pretty happy with the project. However I'm finding that I'm starting > > to need to extend things and would like to get a bit of a picture on > > what's going on. I notice that there are several patches outstanding, > > and that the last release was in 2003, is anyone actively working on > > mockobjects (I assume not)? Is there anyone who will apply patches if > > I submit them, or should I just keep my own copy of the build? > > > > At the moment I'm working with the SQL package, and am finding that I > > need to add more checks regarding SQL statements executed. To do this > > I want to increment the actual count when > > PreparedStatement.executeQuery is called, but I cant do that at > > present because there's no way (that I can see) of finding the current > > count in ExpectationValue. To get around this I've made my own copy > > of ExpecationValue and added a getActual method and would like to > > submit this (and a few other changes) back to the project. Anyone here > > have any thoughts on it? > > > > cheers > > dim > > > > > > ------------------------------------------------------- > > This SF.Net email is sponsored by Yahoo. > > Introducing Yahoo! Search Developer Network - Create apps using Yahoo! > > Search APIs Find out how you can build Yahoo! directly into your own > > Applications - visit > > http://developer.yahoo.net/? > > fr_______________________________________________ > > Mockobjects-java-dev mailing list > > Moc...@li... > > https://lists.sourceforge.net/lists/listinfo/mockobjects-java-dev > > > > >=20 > |
From: Steve F. <st...@m3...> - 2005-05-27 07:03:54
|
As a first step, you should consider moving to jmock, www.jmock,org, which is where we've been for a couple of weeks. Can you send an example of one of your SQL tests? S. On 27 May 2005, at 02:20, Dmitri Colebatch wrote: > hey dev list, > > I've been using mockobjects on and off where I've been able to wrestle > enough control over what I'm working on, and generally have been > pretty happy with the project. However I'm finding that I'm starting > to need to extend things and would like to get a bit of a picture on > what's going on. I notice that there are several patches outstanding, > and that the last release was in 2003, is anyone actively working on > mockobjects (I assume not)? Is there anyone who will apply patches if > I submit them, or should I just keep my own copy of the build? > > At the moment I'm working with the SQL package, and am finding that I > need to add more checks regarding SQL statements executed. To do this > I want to increment the actual count when > PreparedStatement.executeQuery is called, but I cant do that at > present because there's no way (that I can see) of finding the current > count in ExpectationValue. To get around this I've made my own copy > of ExpecationValue and added a getActual method and would like to > submit this (and a few other changes) back to the project. Anyone here > have any thoughts on it? > > cheers > dim > > > ------------------------------------------------------- > This SF.Net email is sponsored by Yahoo. > Introducing Yahoo! Search Developer Network - Create apps using Yahoo! > Search APIs Find out how you can build Yahoo! directly into your own > Applications - visit > http://developer.yahoo.net/? > fr_______________________________________________ > Mockobjects-java-dev mailing list > Moc...@li... > https://lists.sourceforge.net/lists/listinfo/mockobjects-java-dev > > |
From: Dmitri C. <col...@gm...> - 2005-05-27 01:20:12
|
hey dev list, I've been using mockobjects on and off where I've been able to wrestle enough control over what I'm working on, and generally have been pretty happy with the project. However I'm finding that I'm starting to need to extend things and would like to get a bit of a picture on what's going on. I notice that there are several patches outstanding, and that the last release was in 2003, is anyone actively working on mockobjects (I assume not)? Is there anyone who will apply patches if I submit them, or should I just keep my own copy of the build? At the moment I'm working with the SQL package, and am finding that I need to add more checks regarding SQL statements executed. To do this I want to increment the actual count when PreparedStatement.executeQuery is called, but I cant do that at present because there's no way (that I can see) of finding the current count in ExpectationValue. To get around this I've made my own copy of ExpecationValue and added a getActual method and would like to submit this (and a few other changes) back to the project. Anyone here have any thoughts on it? cheers dim |
From: Will S. <wsa...@us...> - 2005-05-07 23:42:18
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/test/atg/repository In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31457/src/extensions/test/atg/repository Added Files: MockRepositoryTest.java Log Message: Remove old ATG mockobjects. Add the mock repository test. --- NEW FILE: MockRepositoryTest.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package atg.repository; import atg.repository.rql.RqlStatement; import com.mockobjects.atg.adapter.mock.MockItemDescriptor; import com.mockobjects.atg.adapter.mock.MockRepository; import com.mockobjects.atg.nucleus.logging.MockLogListener; import junit.framework.TestCase; import java.util.List; import java.util.Map; import java.util.Set; /** * A test suite for the mock repository. I realize that it's only a mock * repository in a very loose sense. * * @author wsargent * @version $Revision: 1.1 $ * * @since Feb 16, 2004 */ public class MockRepositoryTest extends TestCase { private static final String ITEM_DESCRIPTOR_NAME = "test"; protected MockRepository repository; /** * Constructor for MockRepositoryTest. * * @param arg0 */ public MockRepositoryTest(String pTest) { super(pTest); } public void setUp() throws RepositoryException { repository = new MockRepository(); MockItemDescriptor itemDesc = setUpItemDescriptor(); repository.addItemDescriptor(itemDesc); repository.addView(itemDesc.getRepositoryView()); repository.setLoggingDebug(true); repository.addLogListener(new MockLogListener()); } /** * Sets up the item descriptor. * * @return * * @throws RepositoryException */ private MockItemDescriptor setUpItemDescriptor() throws RepositoryException { MockItemDescriptor itemDesc = new MockItemDescriptor(repository, ITEM_DESCRIPTOR_NAME); itemDesc.addPropertyDescriptor("foo", String.class); itemDesc.addPropertyDescriptor("age", Integer.class); itemDesc.addPropertyDescriptor("interests", List.class); itemDesc.addPropertyDescriptor("addresses", Map.class); itemDesc.addPropertyDescriptor("accounts", Set.class); RepositoryView view = itemDesc.getRepositoryView(); assertNotNull(view); return itemDesc; } public void testHasItemDescriptor() throws RepositoryException { MutableRepository r = repository; RepositoryItemDescriptor repItemDesc = r.getItemDescriptor(ITEM_DESCRIPTOR_NAME); assertNotNull(repItemDesc); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); } public void testCreateItem() throws RepositoryException { MutableRepository r = repository; // Can we get an item? MutableRepositoryItem item = r.createItem(ITEM_DESCRIPTOR_NAME); assertNotNull(item); // Test that the item descriptors are the same... RepositoryItemDescriptor descriptor = item.getItemDescriptor(); RepositoryItemDescriptor repItemDesc = r.getItemDescriptor(ITEM_DESCRIPTOR_NAME); assertNotNull(repItemDesc); assertNotNull(descriptor); assertTrue(descriptor.equals(repItemDesc)); } public void testAddItem() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); RepositoryItem item = r.addItem(mri); assertNotNull(item); } public void testRemoveItem() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); RepositoryItem item = r.addItem(mri); String id = item.getRepositoryId(); r.removeItem(id, ITEM_DESCRIPTOR_NAME); // Should be no item with that id. RepositoryItem removedItem = r.getItem(id, ITEM_DESCRIPTOR_NAME); assertNull(removedItem); } public void testModifyItem() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("foo", "created"); assertNotNull(mri); RepositoryItem item = r.addItem(mri); assertNotNull(item); String id = item.getRepositoryId(); assertNotNull(id); MutableRepositoryItem updateItem = r.getItemForUpdate(id, ITEM_DESCRIPTOR_NAME); assertNotNull(updateItem); // Check that it has the same value. String fooValue = (String) updateItem.getPropertyValue("foo"); assertEquals(fooValue, "created"); updateItem.setPropertyValue("foo", "modified"); r.updateItem(updateItem); RepositoryItem afterItem = r.getItem(id, ITEM_DESCRIPTOR_NAME); String newFooValue = (String) afterItem.getPropertyValue("foo"); assertEquals(newFooValue, "modified"); } public void testQueryAll() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("foo", "created"); RepositoryItem addedItem = r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("ALL"); RepositoryItem[] items = stmt.executeQuery(view, null); assertNotNull(items); assertEquals(1, items.length); assertEquals(items[0], addedItem); } public void testQueryFooIsNotCreated() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("foo", "created"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("not (foo = ?0)"); String[] args = { "created" }; RepositoryItem[] items = stmt.executeQuery(view, args); if (items != null) { assertTrue(items.length == 0); } } public void testQueryFooIsCreated() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("foo", "created"); r.addItem(mri); MutableRepositoryItem mri2 = r.createItem(ITEM_DESCRIPTOR_NAME); mri2.setPropertyValue("foo", "notcreated"); r.addItem(mri2); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("foo = ?0"); String[] args = { "created" }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testQueryFooIsNull() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("foo", null); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("foo is null"); String[] args = { null }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testQueryFooIncludesBar() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); List interests = (List) mri.getPropertyValue("interests"); interests.add("biking"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("interests INCLUDES ?0"); String[] args = { "biking" }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testQueryFooIncludesAnyBar() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); List interests = (List) mri.getPropertyValue("interests"); interests.add("biking"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("interests INCLUDES ANY { \"biking\", \"swimming\" }"); RepositoryItem[] items = stmt.executeQuery(view, null); assertNotNull(items); assertEquals(1, items.length); } public void testQueryFooIncludesAllBar() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); List interests = (List) mri.getPropertyValue("interests"); interests.add("biking"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("interests INCLUDES ALL ?0"); String[] args = { "biking" }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } /* public void testQueryFooIncludesItem() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); List interests = (List) mri.getPropertyValue("interests"); interests.add("biking"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("addresses INCLUDES ITEM (zip = \"48322\" AND state = \"MI\")"); String[] args = { "biking" }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } */ /* public void testIdIn() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); List interests = (List) mri.getPropertyValue("interests"); interests.add("biking"); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("ID IN { \"0002421\", \"0002219\", \"0003244\" }"); String[] args = { "biking" }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } */ public void testLessThan() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(29)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age < ?0"); Object[] args = { new Integer(30) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testGreaterThan() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(31)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age > ?0"); Object[] args = { new Integer(30) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testLessThanOrEquals() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(30)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age <= ?0"); Object[] args = { new Integer(30) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testGreaterThanOrEquals() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(30)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age >= ?0"); Object[] args = { new Integer(30) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(1, items.length); } public void testOrderByDesc() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(30)); r.addItem(mri); mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(31)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age > ?0 ORDER BY age DESC"); Integer[] args = { new Integer(20) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(2, items.length); } public void testOrderByAsc() throws RepositoryException { MutableRepository r = repository; MutableRepositoryItem mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(30)); r.addItem(mri); mri = r.createItem(ITEM_DESCRIPTOR_NAME); mri.setPropertyValue("age", new Integer(31)); r.addItem(mri); RepositoryView view = r.getView(ITEM_DESCRIPTOR_NAME); assertNotNull(view); RqlStatement stmt = RqlStatement.parseRqlStatement("age > ?0 ORDER BY age DESC"); Integer[] args = { new Integer(20) }; RepositoryItem[] items = stmt.executeQuery(view, args); assertNotNull(items); assertEquals(2, items.length); } // More queries I haven't even tested... // age > 30 RANGE +10 // age > 30 RANGE 10+ // age > 30 RANGE 40+10 // age > ?0 AND firstName CONTAINS ?1 RANGE ?2+10 // name = ?0.name AND age = ?0.age } |
From: Will S. <wsa...@us...> - 2005-05-07 23:42:17
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31457/src/extensions/com/mockobjects/atg Removed Files: MockQuery.java MockProfile.java MockRepositoryItemDescriptor.java MockRepositoryView.java MockQueryExpression.java MockRepository.java MockRepositoryItem.java MockQueryBuilder.java MockDynamoHttpServletRequest.java MockDynamoHttpServletResponse.java Log Message: Remove old ATG mockobjects. Add the mock repository test. --- MockQuery.java DELETED --- --- MockProfile.java DELETED --- --- MockRepositoryItemDescriptor.java DELETED --- --- MockRepositoryView.java DELETED --- --- MockQueryExpression.java DELETED --- --- MockRepository.java DELETED --- --- MockRepositoryItem.java DELETED --- --- MockQueryBuilder.java DELETED --- --- MockDynamoHttpServletRequest.java DELETED --- --- MockDynamoHttpServletResponse.java DELETED --- |
From: Will S. <wsa...@us...> - 2005-05-07 23:41:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/test/atg/repository In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31258/src/extensions/test/atg/repository Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/test/atg/repository added to the repository |
From: Will S. <wsa...@us...> - 2005-05-07 23:41:29
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/test/atg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31258/src/extensions/test/atg Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/test/atg added to the repository |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:31
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/nucleus/logging In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/nucleus/logging Added Files: MockLogListener.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockLogListener.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.nucleus.logging; import java.io.PrintStream; import atg.nucleus.logging.LogEvent; import atg.nucleus.logging.LogListener; /** * A mock log listener which just prints everything to stdout. * * @author wsargent * @version $Revision: 1.1 $ * * @since Feb 14, 2004 */ public class MockLogListener implements LogListener { private Object mService; private PrintStream mPrintStream; /** * */ public MockLogListener() { super(); } /** * Creates a constructor with logging going to System.out. * * @param pLogger */ public MockLogListener(Object pLogger) { mService = pLogger; mPrintStream = System.out; } /** * Creates a logger which logs to pOut. * * @param pLogger * @param pOut */ public MockLogListener(Object pLogger, PrintStream pOut) { mService = pLogger; mPrintStream = pOut; } /* (non-Javadoc) * @see atg.nucleus.logging.LogListener#logEvent(atg.nucleus.logging.LogEvent) */ public void logEvent(LogEvent arg0) { if (arg0 == null) { return; } String className; if (mService != null) { className = mService.getClass().getName(); } else { className = "UnknownService"; } String line = className + "." + arg0.getMessage(); PrintStream output = getPrintStream(); if (output != null) { output.println(line); } else { System.out.println(line); } } /** * DOCUMENT ME! * * @return */ private PrintStream getPrintStream() { return mPrintStream; } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/servlet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/servlet Added Files: MockDynamoHttpServletResponse.java MockDynamoHttpServletRequest.java MockDynamoServlet.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockDynamoHttpServletResponse.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.servlet; import atg.servlet.DynamoHttpServletRequest; import atg.servlet.DynamoHttpServletResponse; import com.mockobjects.ExpectationList; import com.mockobjects.Verifiable; import java.io.IOException; import javax.servlet.http.HttpServletResponse; /** * The mock dynamo response object. Set up the expected local redirect and * verify to make sure the object was used as intended. * * @author Unknown * @version $Revision: 1.1 $ */ public class MockDynamoHttpServletResponse extends DynamoHttpServletResponse implements Verifiable { private ExpectationList myLocalRedirect = new ExpectationList("Local redirect"); private boolean myShouldThrowExceptionOnRedirect = false; public MockDynamoHttpServletResponse() { } public MockDynamoHttpServletResponse(HttpServletResponse arg1) { super(arg1); } public void sendLocalRedirect(String url, DynamoHttpServletRequest request) throws IOException { myLocalRedirect.addActual(url); myLocalRedirect.addActual(request); if (myShouldThrowExceptionOnRedirect) { throw new IOException("Mock exception"); } } public void setExpectedLocalRedirect(String url, DynamoHttpServletRequest request) { myLocalRedirect.addExpected(url); myLocalRedirect.addExpected(request); } public void setupThrowExceptionOnRedirect() { myShouldThrowExceptionOnRedirect = true; } public String toString() { return "MockDynamoHttpServletResponse"; } public void verify() { myLocalRedirect.verify(); } } --- NEW FILE: MockDynamoHttpServletRequest.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.servlet; import atg.nucleus.naming.ParameterName; import atg.servlet.DynamoHttpServletRequest; import atg.servlet.DynamoHttpServletResponse; import atg.servlet.DynamoServlet; import com.mockobjects.ExpectationSet; import com.mockobjects.MapEntry; import com.mockobjects.util.Verifier; import java.io.IOException; import java.util.HashMap; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * The mock object for the dynamo HTTP request. Set this up with the values * you expect to be called, and then pass it into the class which operates on * the request. * * @author Unknown * @version $Revision: 1.1 $ */ public class MockDynamoHttpServletRequest extends DynamoHttpServletRequest { private ExpectationSet myExpectedOutputParameters = new ExpectationSet("Output Parameters"); private ExpectationSet myServicedLocalParameter = new ExpectationSet("Serviced Local Params"); private HashMap myCookieParameters = new HashMap(); private HashMap myHeaders = new HashMap(); private HashMap myInputParameters = new HashMap(); private HashMap myNamedComponents = new HashMap(); private HashMap myOutputParameters = new HashMap(); public MockDynamoHttpServletRequest() { } public void setParameter(String key, Object value) { myExpectedOutputParameters.addActual(new MapEntry(key, value)); myOutputParameters.put(key, value); } public void verify() { Verifier.verifyObject(this); } public Object getObjectParameter(ParameterName name) { return getObjectParameter(name.getName()); } public Object getObjectParameter(String name) { return myInputParameters.get(name); } public String getParameter(String param1) { return (String) myInputParameters.get(param1); } public boolean serviceLocalParameter(ParameterName name, ServletRequest pRequest, ServletResponse pResponse) throws ServletException, IOException { myServicedLocalParameter.addActual(name.getName()); DynamoServlet servlet = (DynamoServlet) this.getLocalParameter(name); if (servlet != null) { servlet.service((DynamoHttpServletRequest) pRequest, (DynamoHttpServletResponse) pResponse); } return true; } public boolean serviceLocalParameter(String name, ServletRequest request, ServletResponse response) throws ServletException, IOException { myServicedLocalParameter.addActual(name); return true; } public Object getLocalParameter(String parameterName) { return myInputParameters.get(parameterName); } public void setupExpectedOutputParameter(String name, Object value) { myExpectedOutputParameters.addExpected(new MapEntry(name, value)); } public void setupExpectedServicedLocalParameter(String name) { myServicedLocalParameter.addExpected(name); } public void setupExpectedServicedLocalParameter(ParameterName pName) { setupExpectedServicedLocalParameter(pName.getName()); } public void setupInputParameter(String param1, Object param2) { myInputParameters.put(param1, param2); } public void setupInputParameter(ParameterName param1, Object param2) { if (param1 == null) { throw new NullPointerException("null param1"); } setupInputParameter(param1.getName(), param2); } public String getCookieParameter(String parameter) { return (String) myCookieParameters.get(parameter); } public void setupCookieParameter(String key, String parameter) { myCookieParameters.put(key, parameter); } public void setupHeaders(String key, String header) { myHeaders.put(key, header); } public void setupNamedParameter(String name, Object parameter) { myNamedComponents.put(name, parameter); } public String encodeURL(String str) { return str + ";sessionId=123"; } public String getHeader(String param1) { return (String) myHeaders.get(param1); } public Object resolveName(String componentName, boolean param2) { return myNamedComponents.get(componentName); } public String toString() { return "MockDynamoHttpServletRequest"; } } --- NEW FILE: MockDynamoServlet.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.servlet; import atg.servlet.DynamoHttpServletRequest; import atg.servlet.DynamoHttpServletResponse; import atg.servlet.DynamoServlet; import com.mockobjects.ExpectationCounter; import com.mockobjects.Verifiable; import com.mockobjects.util.Verifier; /** * Taken from Piran's patch of mockobjects.com, and never tested. * * @author piran at users.sourceforge.net * @version $Revision: 1.1 $ * * @since Feb 20, 2004 */ public class MockDynamoServlet extends DynamoServlet implements Verifiable { private ExpectationCounter mServiceCalls = new ExpectationCounter("MockDynamoServlet.service"); public void setExpectedServiceCalls(int callCount) { mServiceCalls.setExpected(callCount); } public void service(DynamoHttpServletRequest request, DynamoHttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException { mServiceCalls.inc(); } public void verify() { Verifier.verifyObject(this); } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/userprofiling In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/userprofiling Added Files: MockProfile.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockProfile.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.userprofiling; import java.util.HashMap; import java.util.Map; import atg.userprofiling.Profile; /** * A mock profile which can be set up with values. * * @author Unknown * @version $Revision: 1.1 $ */ public class MockProfile extends Profile { private Map propertyValues = new HashMap(); /** * MockProfile constructor comment. */ public MockProfile() { super(); } /** * */ public Object getPropertyValue(String key) { return propertyValues.get(key); } /** * Sets up the property value to retrieve later. * * @param key * @param propertyValue */ public void setupPropertyValue(String key, Object propertyValue) { propertyValues.put(key, propertyValue); } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/service/pipeline In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/service/pipeline Added Files: MockPipelineResult.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockPipelineResult.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.service.pipeline; import java.util.HashMap; import java.util.Iterator; import atg.service.pipeline.PipelineResult; /** * A mock pipeline result for thingies that want to unit test a pipeline * processor. * * @author wsargent * @version $Revision: 1.1 $ * * @since Feb 14, 2004 */ public class MockPipelineResult implements PipelineResult { protected HashMap mErrors; public MockPipelineResult() { mErrors = new HashMap(7); } public Object getError(Object pKey) { return mErrors.get(pKey); } public void addError(Object pKey, Object pError) { mErrors.put(pKey, pError); } public Object[] getErrorKeys() { Object[] keys = new Object[mErrors.size()]; int i = 0; for (Iterator iter = mErrors.keySet().iterator(); iter.hasNext();) { keys[i] = iter.next(); i++; } return keys; } public Object[] getErrors() { Object[] errors = new Object[mErrors.size()]; int i = 0; for (Iterator iter = mErrors.values().iterator(); iter.hasNext();) { errors[i] = iter.next(); i++; } return errors; } public boolean hasErrors() { return mErrors.size() > 0; } public void removeError(Object pKey) { mErrors.remove(pKey); } public void copyInto(PipelineResult pResult) { Object[] keys = pResult.getErrorKeys(); for (int i = 0; i < keys.length; i++) { Object value = pResult.getError(keys[i]); addError(keys[i], value); } } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/command In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/command Added Files: NucleusTestCase.java CommandRunner.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: NucleusTestCase.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.command; import java.io.PrintWriter; import atg.adapter.gsa.xml.TemplateParser; import atg.nucleus.GenericService; import atg.nucleus.Nucleus; import atg.nucleus.logging.LogListener; import atg.repository.Repository; /** * This is an example test case that uses the command runner to start up a very minimal * Nucleus. * <p> * Note that you must set the system property atg.dynamo.root to point to your ATG Dynamo * setting, and have a Java VM on your path. * </p> * * @author wsargent * @version $Revision: 1.1 $ * @since Feb 22, 2004 */ public class NucleusTestCase extends GenericService { /** Print writer. */ protected static PrintWriter out = new PrintWriter(System.out); /** * */ public NucleusTestCase() throws Exception { super(); } public static void main(String[] argv) throws Exception { NucleusTestCase runner = new NucleusTestCase(); String[] settings = CommandRunner.getSystemPaths("DAS;DAS-UI;DPS"); String dynamoHome = CommandRunner.getDynamoHome(); String className = runner.getClass().getName(); String classPath = settings[0]; String configPath = settings[1]; String modulesPath = settings[2]; CommandRunner.callParserInNewVM(dynamoHome, className, classPath, modulesPath, configPath); } /** * Sets up the logging services inside nucleus. */ public void doStartService() { // Set up the logging to the template parser. LogListener listener = TemplateParser.getLogListener("-- ldr: ", out); addLogListener(listener); // Set up all the default logging. setLoggingDebug(true); setLoggingInfo(true); setLoggingWarning(true); setLoggingError(true); } /** * Runs the thingy inside Nucleus. * * @param args DOCUMENT ME! */ public void run(Repository pRepository) throws Exception { doStartService(); Nucleus.getGlobalNucleus().logDebug("hello"); } } --- NEW FILE: CommandRunner.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.command; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.PrintWriter; import java.util.List; import atg.adapter.gsa.xml.TemplateParser; import atg.applauncher.AppLauncher; import atg.applauncher.AppModule; import atg.applauncher.AppModuleManager; import atg.applauncher.LocalAppModuleManager; import atg.applauncher.MultiInstallLocalAppModuleManager; import atg.core.util.StringUtils; /** * A generic command runner. This code will start up a very limited Nucleus * process and provide a link to the repository. * * <p> * The keen observer of source might determine a certain level of complexity in * the base class. The approach is to minimize the information that needs to * be passed in to methods which can be easily subclassed. So we take a list * of modules and a classname, generate the classpath and configpath we know * we need to run the test, and then create a new Process which has the * correct classpath and configpath to supply to the TemplateParser. * </p> * * <p> * We need to go through this tortured process because ironically one of the * things that Java is bad at is managing its own classpath. We can hack * around the problem of loading classes dynamically in a single VM by using a * classloader, but Dynamo uses a global classloader to resolve classes in * Nucleus, so that approach is out. * </p> * * <p> * The template parser, since it can take an "invoke" class, will then create a * new instance of the class given by getClassName(), and then call the run() * method on it. There's a callProperties method you can use which will * resolve any extra components to execute a unit test. * </p> * * <p> * Needless to say, this doesn't do the JUnit framework much good, but it's the * least amount of set up necessary for subclasses to create something useful. * </p> * * <p> * If you think this is bad, you should see what Cactus goes through. * </p> * * @author Will Sargent * @version $Id: CommandRunner.java,v 1.1 2005/05/07 23:34:16 wsargent Exp $ */ public abstract class CommandRunner { //------------------------------------- /** Print writer. */ protected static PrintWriter mOut; public static String sClassName; /** * No arg constructor. */ public CommandRunner() { } //------------------------------------- /** * Gets the appropriate classpath, configpath and modules path, as the * first, second and third elements of the array, respectively. * * @param pModules DOCUMENT ME! * * @return DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public static String[] getSystemPaths(String pModules) throws Exception { // Set VM Arguments String dynamoHome = getDynamoHome(); setDynamoProperties(dynamoHome); String modulePath = pModules; String[] modules = { "-environment", modulePath }; String[] settings = getDynamoSettings(modules); // Wierd, it doesn't add localconfig... settings[1] += (File.pathSeparatorChar + dynamoHome + "/localconfig"); return settings; } /** * Gets the dynamo home. * * @return * * @throws IllegalStateException DOCUMENT ME! */ public static String getDynamoHome() { String dynamoRoot = System.getProperty("atg.dynamo.root"); if (StringUtils.isEmpty(dynamoRoot)) { String msg = "atg.dynamo.root must be defined as a system property."; throw new IllegalStateException(msg); } String dynamoHome = dynamoRoot + File.separator + "home"; return dynamoHome; } //------------------------------------- /** * This sets up the CommandRunner and calls it with some arguments, then * runs it through the TemplateParser so we can feed data into the GSA. * * <p> * This method is not currently used, but * </p> * * @param pClassName DOCUMENT ME! * @param pClassPath DOCUMENT ME! * @param pConfigPath DOCUMENT ME! */ public static void callParserInSameVM(String pClassName, String pClassPath, String pConfigPath) { mOut = new PrintWriter(System.out); String command = pClassName + ".run"; // use the template parser to set up // a nucleus in which we can run String[] args = new String[4]; args[0] = ("-invoke"); args[1] = command; args[2] = pClassPath; args[3] = pConfigPath; int ret = TemplateParser.runParser(args, mOut); if (ret != 0) { fail("TemplateParser failed with status " + ret); } } //------------------------------------- public static void log(String msg) { System.out.println(msg); } //------------------------------------- public static void fail(Exception pException) { System.out.println("Exception: "); pException.printStackTrace(); System.exit(-1); } //------------------------------------- public static void fail(String pMessage) { System.out.println("Error: " + pMessage); System.exit(-1); } //-------------------------------- /** * Sets the system properties * * @param pDynamoHome DOCUMENT ME! */ public static void setDynamoProperties(String pDynamoHome) { String dynamoHome = pDynamoHome; // Set VM Arguments System.setProperty("atg.dynamo.server.home", dynamoHome); System.setProperty("java.security.policy", dynamoHome + "/lib/java.policy"); System.setProperty("atg.dynamo.home", dynamoHome); System.setProperty("atg.dynamo.display", ""); System.setProperty("java.protocol.handler.pkgs", "atg.net.www.protocol"); System.setProperty("java.naming.factory.url.pkgs", "atg.jndi.url"); System.setProperty("java.naming.factory.initial", "atg.j2ee.jndi.SerialInitContextFactory"); /* System.setProperty("atg.j2ee.container.nonValidatingParserClass", "com.sun.xml.parser.Parser"); System.setProperty("atg.j2ee.container.xmlToolsFactoryClass", "atg.xml.tools.sun.SunXMLToolsFactory"); */ } //------------------------------------- /** * Invokes the parser in a new VM which has the correct classpath and * configpath. * * @param pDynamoHome DOCUMENT ME! * @param pCommand DOCUMENT ME! * @param pClassPath DOCUMENT ME! * @param pModules DOCUMENT ME! * @param pConfigPath DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public static void callParserInNewVM(String pDynamoHome, String pCommand, String pClassPath, String pModules, String pConfigPath) throws Exception { final String dynamoHome = pDynamoHome; String dynamoModule = pModules; PrintStream out = System.out; out.println("DYNAMO_HOME: " + dynamoHome); out.println("-------------------"); out.println("MODULES: " + dynamoModule); out.println("-------------------"); // For some reason, it doesn't include localconfig so we add it here... String dynamoConfig = pConfigPath + File.pathSeparatorChar + dynamoHome + "/localconfig"; out.println("CONFIGPATH: " + dynamoConfig); out.println("-------------------"); // .\lib\launcher.jar;.\locallib\; out.println("CLASSPATH: " + pClassPath); out.println("-------------------"); BufferedWriter configWriter = null; try { File configFile = new File("dynamo.config"); FileWriter fwriter = new FileWriter(configFile); configWriter = new BufferedWriter(fwriter); configWriter.write(dynamoConfig); } catch (IOException ie) { ie.printStackTrace(); } finally { if (configWriter != null) { configWriter.close(); } } String dynamoCommand = getDynamoCommand(dynamoHome, pCommand + ".run", pClassPath, dynamoModule, dynamoConfig); invokeProcess(dynamoHome, dynamoCommand); } /** * Invokes the TemplateParser in a VM which has the classes to properly run * it. * * @param dynamoHome * @param command */ public static void invokeProcess(String dynamoHome, String command) { try { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(command, null, new File(dynamoHome)); InputStream err = process.getErrorStream(); InputStream in = process.getInputStream(); Thread errorThread = new Thread(new StreamReader(err, System.err)); Thread inputThread = new Thread(new StreamReader(in, System.out)); errorThread.start(); inputThread.start(); } catch (IOException ie) { ie.printStackTrace(); } } //------------------------------------- /** * */ public static String getDynamoCommand(String dynamoHome, String command, String classPath, String dynamoModule, String dynamoConfig) { StringBuffer b = new StringBuffer(); b.append("javaw"); b.append(" "); b.append("-classpath"); b.append(" "); b.append(classPath); b.append(" "); b.append("-Xnoclassgc"); b.append(" "); b.append("-Xms128m"); b.append(" "); b.append("-Xmx256m"); b.append(" "); b.append("-Xverify:none"); b.append(" "); b.append("-Djava.security.policy=lib/java.policy"); b.append(" "); b.append("-Datg.dynamo.server.home=\"" + dynamoHome + "\""); b.append(" "); b.append("-Djava.security.policy=" + dynamoHome + "/lib/java.policy"); b.append(" "); b.append("-Datg.dynamo.home=" + dynamoHome); b.append(" "); b.append("-Datg.dynamo.root=" + dynamoHome + "/../"); b.append(" "); b.append("-Djava.naming.factory.initial=atg.j2ee.jndi.SerialInitContextFactory"); b.append(" "); b.append("-Datg.j2ee.container.nonValidatingParserClass=com.sun.xml.parser.Parser"); b.append(" "); b.append("-Datg.j2ee.container.xmlToolsFactoryClass=atg.xml.tools.sun.SunXMLToolsFactory"); b.append(" "); b.append("-Datg.dynamo.display="); b.append(" "); b.append("-Djava.protocol.handler.pkgs=atg.net.www.protocol"); b.append(" "); b.append("-Djava.naming.factory.url.pkgs=atg.jndi.url"); b.append(" "); b.append("atg.adapter.gsa.xml.TemplateParser"); b.append(" "); b.append("-invoke"); b.append(" "); b.append(command); b.append(" "); b.append("-configPath"); b.append(" "); b.append(dynamoConfig); return b.toString(); } //-------------------------------- /** * Returns array of strings, where the first element is the classpath, the * second module is the configpath, and the third module is the dynamo * modules. * * @param args DOCUMENT ME! * * @return DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public static String[] getDynamoSettings(String[] args) throws Exception { // Spit out shell commands that will define the CLASSPATH and // CONFIGPATH variables. File dynamoRoot = new File(System.getProperty("atg.dynamo.root")); String modulePath = System.getProperty("atg.dynamo.modulepath"); AppModuleManager mgr = null; if (modulePath == null) { System.out.println("Using local app -- define atg.dynamo.modulepath to use DAS modules"); mgr = new LocalAppModuleManager(dynamoRoot); } else { mgr = new MultiInstallLocalAppModuleManager(modulePath, dynamoRoot); } AppLauncher launcher = AppLauncher.getLauncher(mgr, args[1]); StringBuffer classPath = new StringBuffer(launcher.getClassPath()); String systemClassPath = System.getProperty("java.class.path"); if (systemClassPath.length() > 0) { classPath.append(File.pathSeparatorChar); classPath.append(systemClassPath); } // form the boot class path from built-in settings // followed by launcher settings... String bootClassPath = launcher.getClassPath(true); if (bootClassPath != null) { if (bootClassPath.length() == 0) { bootClassPath = null; } else { StringBuffer strbufBoot = new StringBuffer(bootClassPath); strbufBoot.append(File.pathSeparatorChar); strbufBoot.append(System.getProperty("sun.boot.class.path", "")); bootClassPath = strbufBoot.toString(); } } // form CONFIGPATH from launcher's modules' manifest // attributes followed by explicit settings. Note: config // paths are reverse of module dependency order, since // dependent modules must occur last here. /* This code doesn't compile, and is only useful for liveconfig anyway... WS. List attributes = new ArrayList(); attributes.add(AppModule.MODULE_CONFIG_PATH); if ("on".equalsIgnoreCase(System.getProperty("atg.dynamo.liveconfig"))) { attributes.add(AppModule.MODULE_LIVECONFIG_PATH); } */ List configPaths = launcher.getReversedFileListAttributeValues(AppModule.MODULE_CONFIG_PATH); StringBuffer configPath = new StringBuffer(); for (int i = 0; i < configPaths.size(); i++) { String configDir = ((String) configPaths.get(i)).trim(); if (configDir.length() > 0) { if (configPath.length() > 0) { configPath.append(File.pathSeparatorChar); } configPath.append(configDir); } } if ((args.length >= 3) && (args[2].trim().length() > 0)) { if (configPath.length() > 0) { configPath.append(File.pathSeparatorChar); } configPath.append(args[2].trim()); } /* if (bootClassPath != null) { System.out.println(AppUtils.shellVariableAppend( "JAVA_ARGS", " -Xbootclasspath:" + bootClassPath)); } // Determine whether any modules specify shell scripts, and // include invocations of those scripts. List configScripts = launcher.getReversedFileListAttributeValues(AppModule.MODULE_CONFIG_SCRIPTS); for (int i = 0; i < configScripts.size(); i++) { System.out.println(AppUtils.scriptInvocation((String) configScripts.get(i))); } */ // set the DYNAMO_MODULES to include dependent modules StringBuffer modules = new StringBuffer(); List names = launcher.getModules(); for (int i = names.size(); i > 0; i--) { if (modules.length() > 0) { modules.append(File.pathSeparator); } AppModule am = (AppModule) names.get(i - 1); modules.append(am.getName()); } // Turn the string buffers into strings. return new String[] { classPath.toString(), configPath.toString(), modules.toString() }; } /** * Picks input coming from the process and prints it out. (No, this * doesn't happen automatically.) * * @author wsargent * @version $Revision: 1.1 $ * * @since Feb 22, 2004 */ static class StreamReader implements Runnable { InputStream in; PrintStream out; /** * DOCUMENT ME! * * @param pIn * @param pOut */ public StreamReader(InputStream pIn, PrintStream pOut) { in = pIn; out = pOut; } public void run() { BufferedReader bin = new BufferedReader(new InputStreamReader(in)); String line = null; try { for (;;) { try { while ((line = bin.readLine()) != null) { out.println(line); } Thread.sleep(100); } catch (InterruptedException e) { } } } catch (IOException e) { } } } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:30
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/dtm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/dtm Added Files: MockTransactionManager.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockTransactionManager.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.dtm; import javax.transaction.TransactionManager; import atg.dtm.StaticTransactionManagerWrapper; import atg.dtm.TransactionManagerImpl; /** * A mock transaction manager. This implements transactions, but using * the static transaction manager wrapper -- which doesn't exist within * the nucleus framework. * <p> * TODO: I should probably provide a method to turn this class into a * no-op on request. * </p> * * @author wsargent * @version $Revision: 1.1 $ * @since Feb 14, 2004 */ public class MockTransactionManager extends StaticTransactionManagerWrapper { // This transaction manager uses the ATG implementation. You may be // up for a massive amount of pain if you are using the Websphere or // Weblogic transaction managers, because WAS 5.0 differs from WAS 5.1 // and, well, there are bugs in the WAS transaction managers, so they // don't work quite the same. So unit tests that pass here may fail // out in the Real World. Take a look at NucleusServlet for more info. static { TransactionManager tm = new TransactionManagerImpl(); MockTransactionManager.setStaticTransactionManager(tm); } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:29
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/adapter/mock In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29548/src/extensions/com/mockobjects/atg/adapter/mock Added Files: MockRepositoryItem.java MockRepositoryView.java MockRepository.java MockQueryBuilder.java MockPropertyDescriptor.java MockItemDescriptor.java Log Message: Add revised ATG mockobjects information. --- NEW FILE: MockRepositoryItem.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import atg.repository.ItemDescriptorImpl; import atg.repository.MutableRepositoryItem; import atg.repository.RepositoryException; import atg.repository.RepositoryItemImpl; import atg.repository.RepositoryPropertyDescriptor; /** * A mock object repository item. Doesn't do very much right now. * * @author Will Sargent * @version $Revision: 1.1 $ */ public class MockRepositoryItem extends RepositoryItemImpl implements MutableRepositoryItem { private String mRepositoryId; private boolean mIsRemoved; private boolean mTransient; /** * Creates the mock repository. * * @param arg0 */ MockRepositoryItem(ItemDescriptorImpl arg0) { super(arg0); } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#getRepositoryId() */ public String getRepositoryId() { return mRepositoryId; } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#setRepositoryId(java.lang.String) */ public void setRepositoryId(String arg0) { mRepositoryId = arg0; } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#getOldPropertyValue(atg.repository.RepositoryPropertyDescriptor) */ public Object getOldPropertyValue(RepositoryPropertyDescriptor arg0) { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#setPropertyValue(atg.repository.RepositoryPropertyDescriptor, java.lang.Object) */ public void setPropertyValue(RepositoryPropertyDescriptor pPropertyDescriptor, Object pValue) { pPropertyDescriptor.setPropertyValue(this, pValue); } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#setPropertyValueInCache(atg.repository.RepositoryPropertyDescriptor, java.lang.Object) */ public void setPropertyValueInCache(RepositoryPropertyDescriptor arg0, Object arg1) { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#removePropertyValueFromCache(atg.repository.RepositoryPropertyDescriptor) */ public void removePropertyValueFromCache(RepositoryPropertyDescriptor arg0) { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#isTransient() */ public boolean isTransient() { return mTransient; } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#setTransient(boolean) */ protected void setTransient(boolean arg0) { mTransient = arg0; } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#isRemoved() */ public boolean isRemoved() throws RepositoryException { return mIsRemoved; } /* (non-Javadoc) * @see atg.repository.RepositoryItemImpl#setRemoved(boolean) */ protected void setRemoved(boolean arg0) { mIsRemoved = arg0; } } --- NEW FILE: MockRepositoryView.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import atg.beans.DynamicPropertyDescriptor; import atg.core.util.CaseInsensitiveHashtable; import atg.core.util.NumberTable; import atg.core.util.ResourceUtils; import atg.dtm.TransactionDemarcation; import atg.dtm.TransactionDemarcationException; import atg.nucleus.GenericService; import atg.repository.Query; import atg.repository.QueryBuilder; import atg.repository.QueryExpression; import atg.repository.QueryOptions; import atg.repository.RepositoryException; import atg.repository.RepositoryImpl; import atg.repository.RepositoryItem; import atg.repository.RepositoryItemDescriptor; import atg.repository.RepositoryItemImpl; import atg.repository.RepositorySorter; import atg.repository.RepositoryView; import atg.repository.RepositoryViewImpl; import atg.repository.SortDirectives; import atg.repository.UnsupportedFeatureException; import atg.repository.query.AndQuery; import atg.repository.query.ComparisonQuery; import atg.repository.query.ConstantQueryExpression; import atg.repository.query.IncludesAllQuery; import atg.repository.query.IncludesAnyQuery; import atg.repository.query.IncludesQuery; import atg.repository.query.IsNullQuery; import atg.repository.query.NotIncludesAnyQuery; import atg.repository.query.NotIncludesQuery; import atg.repository.query.NotIsNullQuery; import atg.repository.query.NotQuery; import atg.repository.query.OrQuery; import atg.repository.query.PatternMatchQuery; import atg.repository.query.PropertyQueryExpression; import atg.repository.query.QueryBuilderImpl; import atg.repository.query.QueryImpl; import atg.repository.query.UnconstrainedQuery; import atg.service.dynamo.LangLicense; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.Dictionary; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.ResourceBundle; import java.util.Set; /** * A view of the mock repository. This is responsible for doing all the * queries of the repository (and as such, probably has more complicated logic * that a "mock" repository isn't supposed to have, but what the heck). * * <p> * Absolutely no effort is made to make any of this be efficient, scalable, or * even vaguely appropriate for production use. * </p> * * @author Will Sargent * @version $Revision: 1.1 $ * * @since 2/16/04 */ public class MockRepositoryView extends RepositoryViewImpl { MockQueryBuilder mBuilder; String mViewName; /** * DOCUMENT ME! * * @param itemDesc * * @throws IllegalArgumentException if itemDesc is null. */ public MockRepositoryView(MockItemDescriptor itemDesc) { super(); if (itemDesc == null) { throw new IllegalArgumentException("null itemDesc"); } setItemDescriptor(itemDesc); setRepository(itemDesc.getRepository()); mBuilder = new MockQueryBuilder(this); } MockRepository getMockRepository() { return (MockRepository) getRepository(); } MockItemDescriptor getMockItemDescriptor() { return (MockItemDescriptor) getItemDescriptor(); } /** * @see atg.repository.RepositoryViewImpl#getQueryBuilder() */ public QueryBuilder getQueryBuilder() { return mBuilder; } public String getName() { return "MockRepositoryView[" + getViewName() + "]"; } /** * Returns the "unwrapped" mock item descriptor. * * @return * * @throws RepositoryException */ protected MockItemDescriptor getMockRepositoryItemDescriptor() throws RepositoryException { return (MockItemDescriptor) getItemDescriptor(); } /* (non-Javadoc) * @see atg.repository.RepositoryView#executeQuery(atg.repository.Query, atg.repository.QueryOptions) */ public RepositoryItem[] executeQuery(Query pQuery, QueryOptions pQueryOptions) throws RepositoryException { return executeUncachedQuery(pQuery, pQueryOptions); } /* (non-Javadoc) * @see atg.repository.RepositoryView#executeCountQuery(atg.repository.Query) */ public int executeCountQuery(Query pQuery) throws RepositoryException { throw new UnsupportedFeatureException("executeCountQuery() not implemented"); } /* (non-Javadoc) * @see atg.repository.RepositoryViewImpl#executeUncachedQuery(atg.repository.Query, atg.repository.QueryOptions) */ public RepositoryItem[] executeUncachedQuery(Query pQuery, QueryOptions pOptions) throws RepositoryException { /* if (pQueryOptions == null) { return performQuery(pQuery, 0, -1, null); } else { return performQuery(pQuery, pQueryOptions.getStartingIndex(), pQueryOptions.getEndingIndex(), pQueryOptions.getSortDirectives()); } */ MockRepository repos = getMockRepository(); //MockItemDescriptor itemDesc = getMockItemDescriptor(); TransactionDemarcation td = null; try { td = new TransactionDemarcation(); td.begin(repos.getTransactionManager(), TransactionDemarcation.REQUIRED); Collection col = executeTransientQuery(null, pQuery); SortDirectives sort = pOptions.getSortDirectives(); int startIndex = pOptions.getStartingIndex(); int endIndex = pOptions.getEndingIndex(); if ((sort != null) && (sort.getNumDirectives() > 0)) { RepositoryItem[] arr = (RepositoryItem[]) col.toArray(new RepositoryItem[0]); Arrays.sort(arr, sort); ArrayList sortedList = new ArrayList(arr.length); for (int i = 0; i < arr.length; i++) sortedList.add(arr[i]); col = sortedList; } ArrayList l = new ArrayList(col.size()); int i = 0; for (Iterator e = col.iterator(); e.hasNext(); i++) { if (i == endIndex) { break; } MockRepositoryItem item = (MockRepositoryItem) e.next(); if (i >= startIndex) { l.add(item); } } return (RepositoryItem[]) l.toArray(new RepositoryItem[l.size()]); } catch (TransactionDemarcationException exc1) { if (repos.isLoggingError()) { repos.logError(exc1); } return new RepositoryItem[0]; } finally { try { td.end(); } catch (TransactionDemarcationException exc2) { if (repos.isLoggingError()) { repos.logError(exc2); } return new RepositoryItem[0]; } } } Collection executeTransientQuery(Collection pList, Query pQuery) throws RepositoryException { if (pList == null) { RepositoryItem[] items = getMockItemDescriptor().getItems(); pList = Arrays.asList(items); } if (pQuery instanceof atg.repository.query.UnconstrainedQuery) { return pList; } else if (pQuery instanceof QueryImpl) { QueryImpl query = (QueryImpl) pQuery; List l = new ArrayList(); for (Iterator i = pList.iterator(); i.hasNext();) { MockRepositoryItem item = (MockRepositoryItem) i.next(); if (query.doTest(item)) { l.add(item); } } return l; } return new ArrayList(); } //------------------------- public boolean isLoggingDebug() { RepositoryImpl impl = (RepositoryImpl) getRepository(); return (impl != null) && impl.isLoggingDebug(); } //------------------------- public void logDebug(String pMessage) { RepositoryImpl impl = (RepositoryImpl) getRepository(); impl.logDebug(pMessage); } } --- NEW FILE: MockRepository.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import java.text.MessageFormat; import atg.core.util.StringUtils; import atg.repository.MutableRepository; import atg.repository.MutableRepositoryItem; import atg.repository.RepositoryException; import atg.repository.RepositoryImpl; import atg.repository.RepositoryItem; import atg.service.idgen.IdGeneratorException; import atg.service.idgen.TransientIdGenerator; import com.mockobjects.atg.dtm.MockTransactionManager; /** * A mock repository. This is a complete replacement of the previous * implementation. Although it does not persist any data, it's capable of * mutable operations (add, update, remove), supports collections, and can be * queried. * * @author Will Sargent * @version $Version$ */ public class MockRepository extends RepositoryImpl implements MutableRepository { private static final String PERSISTENT = "persistent"; private static final String TRANSIENT = "transient"; private TransientIdGenerator persistentIdGenerator; private TransientIdGenerator transientIdGenerator; /** * MockRepository constructor comment. */ public MockRepository() { super(); // Make a mock transaction manager in case we are // called upon to provide one. setTransactionManager(new MockTransactionManager()); transientIdGenerator = new TransientIdGenerator(); persistentIdGenerator = new TransientIdGenerator(); } /** * DOCUMENT ME! * * @param pRepositoryId DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! * * @see atg.repository.RepositoryImpl#getItem(java.lang.String) * @deprecated */ public RepositoryItem getItem(String pRepositoryId) throws RepositoryException { if (StringUtils.isEmpty(getDefaultViewName())) { throw new RepositoryException("null default view name."); } return getItem(pRepositoryId, getDefaultViewName()); } /** * @see atg.repository.RepositoryImpl#getItem(java.lang.String, * java.lang.String) */ public RepositoryItem getItem(String pRepositoryId, String pDescriptorName) throws RepositoryException { if (StringUtils.isEmpty(pRepositoryId)) { throw new RepositoryException("null repository id"); } if (StringUtils.isEmpty(pDescriptorName)) { throw new RepositoryException("null descriptor name"); } if (isLoggingDebug()) { String msg = "getItem: pRepositoryId = {0}, pDescriptorName = {1}"; msg = MessageFormat.format(msg, new Object[] { pRepositoryId, pDescriptorName }); logDebug(msg); } MockItemDescriptor itemDesc = (MockItemDescriptor) getItemDescriptor(pDescriptorName); if (itemDesc == null) { throw new RepositoryException("No item descriptor found for " + pDescriptorName); } RepositoryItem item = itemDesc.getRepositoryItem(pRepositoryId); return item; } /** * DOCUMENT ME! * * @param pRepositoryId DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! * * @see atg.repository.MutableRepository#getItemForUpdate(java.lang.String) * @deprecated */ public MutableRepositoryItem getItemForUpdate(String pRepositoryId) throws RepositoryException { return getItemForUpdate(pRepositoryId, getDefaultViewName()); } /** * @see atg.repository.MutableRepository#getItemForUpdate(java.lang.String, * java.lang.String) */ public MutableRepositoryItem getItemForUpdate(String pRepositoryId, String pItemDescriptorName) throws RepositoryException { if (StringUtils.isEmpty(pRepositoryId)) { throw new RepositoryException("null repository id"); } if (StringUtils.isEmpty(pItemDescriptorName)) { throw new RepositoryException("null item descriptor name"); } if (isLoggingDebug()) { String msg = "getItemForUpdate: pRepositoryId = {0}, pItemDescriptorName = {1}"; msg = MessageFormat.format(msg, new Object[] { pRepositoryId, pItemDescriptorName }); logDebug(msg); } MockItemDescriptor itemDesc = (MockItemDescriptor) getItemDescriptor(pItemDescriptorName); if (itemDesc == null) { throw new RepositoryException("No item descriptor found for " + pItemDescriptorName); } MockRepositoryItem item = itemDesc.getRepositoryItem(pRepositoryId); return item; } /** * DOCUMENT ME! * * @param pRepositoryIds DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! * * @see atg.repository.MutableRepository#getItemsForUpdate(java.lang.String[]) * @deprecated */ public MutableRepositoryItem[] getItemsForUpdate(String[] pRepositoryIds) throws RepositoryException { return getItemsForUpdate(pRepositoryIds, getDefaultViewName()); } /** * @see atg.repository.MutableRepository#getItemsForUpdate(java.lang.String[], * java.lang.String) */ public MutableRepositoryItem[] getItemsForUpdate(String[] pRepositoryIds, String pItemDescName) throws RepositoryException { throw new UnsupportedOperationException(); } /** * Creates a mock repository item of the type given. * * @see atg.repository.MutableRepository#createItem(java.lang.String) */ public MutableRepositoryItem createItem(String pItemDescName) throws RepositoryException { if (StringUtils.isEmpty(pItemDescName)) { throw new RepositoryException("null descriptor name"); } if (isLoggingDebug()) { String msg = "createItem: pItemDescName = {0}"; msg = MessageFormat.format(msg, new Object[] { pItemDescName }); logDebug(msg); } // Get the item descriptor for the item. MockItemDescriptor descriptor = (MockItemDescriptor) getItemDescriptor(pItemDescName); if (descriptor == null) { throw new RepositoryException("null item descriptor"); } MockRepositoryItem item = new MockRepositoryItem(descriptor); try { String id = transientIdGenerator.generateStringId(TRANSIENT); item.setRepositoryId(id); } catch (IdGeneratorException e) { throw new RepositoryException(e); } return item; } /** * @see atg.repository.MutableRepository#createItem(java.lang.String, * java.lang.String) */ public MutableRepositoryItem createItem(String pId, String pItemDescName) throws RepositoryException { if (StringUtils.isEmpty(pId)) { throw new RepositoryException("null repository id"); } if (StringUtils.isEmpty(pItemDescName)) { throw new RepositoryException("null descriptor name"); } if (isLoggingDebug()) { String msg = "createItem: pId = {0}, pItemDescName = {1}"; msg = MessageFormat.format(msg, new Object[] { pId, pItemDescName }); logDebug(msg); } MockItemDescriptor descriptor = (MockItemDescriptor) getItemDescriptor(pItemDescName); MockRepositoryItem item = new MockRepositoryItem(descriptor); item.setRepositoryId(pId); return item; } /** * DOCUMENT ME! * * @param arg0 DOCUMENT ME! * @param arg1 DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! * @throws UnsupportedOperationException DOCUMENT ME! * * @see atg.repository.MutableRepository#addItem(atg.repository.RepositoryItem, * java.lang.String) * @deprecated */ public RepositoryItem addItem(RepositoryItem arg0, String arg1) throws RepositoryException { throw new UnsupportedOperationException(); } /** * @see atg.repository.MutableRepository#addItem(atg.repository.MutableRepositoryItem) */ public RepositoryItem addItem(MutableRepositoryItem pItem) throws RepositoryException { if (pItem == null) { throw new RepositoryException("pItem is null"); } if (isLoggingDebug()) { String msg = "addItem: pItem = {0}"; msg = MessageFormat.format(msg, new Object[] { pItem }); logDebug(msg); } MockItemDescriptor itemDesc = (MockItemDescriptor) pItem.getItemDescriptor(); if (! (pItem instanceof MockRepositoryItem)) { throw new RepositoryException("pItem is not a mock repository item"); } MockRepositoryItem mockItem = (MockRepositoryItem) pItem; String repositoryId = mockItem.getRepositoryId(); if (repositoryId == null) { String msg = "addItem: item.repositoryId is null"; throw new RepositoryException(msg); } if (repositoryId.startsWith(TRANSIENT)) { String permanentId; try { permanentId = persistentIdGenerator.generateStringId(PERSISTENT); } catch (IdGeneratorException e) { throw new RepositoryException(e); } mockItem.setRepositoryId(permanentId); } RepositoryItem item = itemDesc.addRepositoryItem(mockItem); return item; } /** * @see atg.repository.MutableRepository#updateItem(atg.repository.MutableRepositoryItem) */ public void updateItem(MutableRepositoryItem pItem) throws RepositoryException { if (pItem == null) { throw new RepositoryException("null pItem"); } if (isLoggingDebug()) { String msg = "updateItem: pItem = {0}"; msg = MessageFormat.format(msg, new Object[] { pItem }); logDebug(msg); } MockItemDescriptor descriptor = (MockItemDescriptor) pItem.getItemDescriptor(); descriptor.updateRepositoryItem(pItem); } /** * Removes the item from the repository. * * @param pRepositoryId DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! * * @see atg.repository.MutableRepository#removeItem(java.lang.String) * @deprecated */ public void removeItem(String pRepositoryId) throws RepositoryException { removeItem(pRepositoryId, getDefaultViewName()); } /** * @see atg.repository.MutableRepository#removeItem(java.lang.String, * java.lang.String) */ public void removeItem(String pRepositoryId, String pItemDescriptorName) throws RepositoryException { if (StringUtils.isEmpty(pRepositoryId)) { throw new RepositoryException("null repository id"); } if (StringUtils.isEmpty(pItemDescriptorName)) { throw new RepositoryException("null descriptor name"); } if (isLoggingDebug()) { String msg = "removeItem: pRepositoryId = {0}, pItemDescriptorName = {1}"; msg = MessageFormat.format(msg, new Object[] { pRepositoryId, pItemDescriptorName }); logDebug(msg); } MockItemDescriptor itemDesc = (MockItemDescriptor) getItemDescriptor(pItemDescriptorName); itemDesc.removeRepositoryItem(pRepositoryId); } } --- NEW FILE: MockQueryBuilder.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import atg.repository.RepositoryView; import atg.repository.query.QueryBuilderImpl; /** * A query builder that queries the mock repository. * * @author Will Sargent */ public class MockQueryBuilder extends QueryBuilderImpl { /** * @param arg0 */ public MockQueryBuilder(RepositoryView arg0) { super(arg0); } } --- NEW FILE: MockPropertyDescriptor.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import atg.adapter.gsa.ChangeAwareList; import atg.adapter.gsa.ChangeAwareMap; import atg.adapter.gsa.ChangeAwareSet; import atg.beans.DynamicBeanInfo; import atg.repository.RepositoryItemImpl; import atg.repository.RepositoryPropertyDescriptor; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * The mock property descriptor. This defines the classes for the properties * and returns information about which properties have which values. * * @author wsargent * @version $Revision: 1.1 $ * * @since Feb 16, 2004 */ public class MockPropertyDescriptor extends RepositoryPropertyDescriptor { Map mItemsToValuesMap = new HashMap(89); Map mValuesToItemsMap = new HashMap(89); /** * Creates a property descriptor with the name and type. * * @param pPropertyName * @param pPropertyType */ public MockPropertyDescriptor(String pPropertyName, Class pPropertyType) { super(pPropertyName, pPropertyType, null); } /** * No arg constructor */ public MockPropertyDescriptor() { super(); } /** * Descriptor with name only. * * @param arg0 */ public MockPropertyDescriptor(String arg0) { super(arg0); } /** * A quick constructor with name, type and description. * * @param pPropertyName * @param pPropertyType * @param pDescription */ public MockPropertyDescriptor(String pPropertyName, Class pPropertyType, String pDescription) { super(pPropertyName, pPropertyType, pDescription); } /** * Default constructor from superclass. * * @param arg0 */ public MockPropertyDescriptor(RepositoryPropertyDescriptor arg0) { super(arg0); } /** * Adds the property value to the map. * * @see atg.repository.RepositoryPropertyDescriptor#setPropertyValue(atg.repository.RepositoryItemImpl, * java.lang.Object) */ public void setPropertyValue(RepositoryItemImpl pItem, Object pValue) { String id = pItem.getRepositoryId(); mItemsToValuesMap.put(id, pValue); List itemsSet; if (mValuesToItemsMap.containsKey(pValue)) { itemsSet = (List) mValuesToItemsMap.get(pValue); } else { itemsSet = new ArrayList(); mValuesToItemsMap.put(pValue, itemsSet); } itemsSet.add(id); } /** * Gets the property value from the map. * * @see atg.repository.RepositoryPropertyDescriptor#getPropertyValue(atg.repository.RepositoryItemImpl, * java.lang.Object) */ public Object getPropertyValue(RepositoryItemImpl pItem, Object value) { String id = pItem.getRepositoryId(); value = mItemsToValuesMap.get(id); // translate nulls if (value == RepositoryItemImpl.NULL_OBJECT) { value = null; } // wrap collection like things as appropriate if (isCollectionOrMap()) { Class cl = getPropertyType(); // lists if (cl.isAssignableFrom(java.util.List.class)) { // null means empty if (value == null) { value = new ArrayList(); } // wrap non change aware objects if (! (value instanceof ChangeAwareList)) { value = new ChangeAwareList((ArrayList) value, pItem, getName()); } } // sets else if (cl.isAssignableFrom(java.util.Set.class)) { // null means empty if (value == null) { value = new HashSet(7); } // wrap non change aware objects if (! (value instanceof ChangeAwareSet)) { value = new ChangeAwareSet((Set) value, pItem, getName()); } } // maps else if (cl.isAssignableFrom(java.util.Map.class)) { // null means empty if (value == null) { value = new HashMap(7); } // wrap non change aware objects if (! (value instanceof ChangeAwareMap)) { value = new ChangeAwareMap((Map) value, pItem, getName()); } } // should never happen else { throw new IllegalArgumentException(); } } // isCollectionOrMap() if (isLoggingDebug()) { String val = String.valueOf(value); String name = (value == null) ? "" : value.getClass().getName(); MockItemDescriptor desc = getMockItemDescriptor(); String descName = (desc == null) ? "<null>" : desc.getItemDescriptorName(); debug("getPropertyPD[" + descName + ',' + pItem.getRepositoryId() + ',' + getName() + "] = " + val + " (" + name + ')', 6); } // return the answer return value; } protected MockItemDescriptor getMockItemDescriptor() { return (MockItemDescriptor) getItemDescriptor(); } /** * Returns the map of values. * * @return */ Map getMap() { return mValuesToItemsMap; } //------------------------------------- // Logging //------------------------------------- /** * Log a debug message * * @param pMsg DOCUMENT ME! */ void logDebug(String pMsg) { MockItemDescriptor desc = getMockItemDescriptor(); if (desc != null) { desc.logDebug(pMsg); } } //------------------------------------- /** * Check logging debug status * * @return DOCUMENT ME! */ public boolean isLoggingDebug() { MockItemDescriptor desc = getMockItemDescriptor(); return (desc != null) && desc.isLoggingDebug(); } //------------------------------------- /** * Log a detailed debug message * * @param pMsg DOCUMENT ME! * @param pLevel DOCUMENT ME! */ void debug(String pMsg, int pLevel) { MockItemDescriptor desc = getMockItemDescriptor(); if (desc != null) { desc.debug(pMsg, pLevel); } } //------------------------------------- // Object overrides //------------------------------------- /** * Return a string representation of this object * * @return a string representation of this object */ public String toString() { StringBuffer b = new StringBuffer(); /* simple name of type */ String className = getPropertyType().getName(); int start = className.lastIndexOf('.') + 1; if (start < 0) { start = 0; } // shouldn't get an exception here String type = null; try { type = className.substring(start); } catch (IndexOutOfBoundsException e) { type = className; } /* bean infos */ DynamicBeanInfo pbi = null; try { pbi = getPropertyBeanInfo(); } catch (IntrospectionException ie) { } DynamicBeanInfo cbi = null; try { cbi = getComponentPropertyBeanInfo(); } catch (IntrospectionException ie) { } b.append("\n{").append(getName()); b.append(",pType=").append(type); b.append(",IDesc=").append(getItemDescriptor()); b.append("\n "); b.append(",pBI=").append(pbi); b.append(",pIDesc=").append(getPropertyItemDescriptor()); b.append("\n "); b.append(",cType=").append(getComponentPropertyType()); b.append(",cBI=").append(cbi); b.append(",cIDesc=").append(getComponentItemDescriptor()); b.append('}'); return b.toString(); } } --- NEW FILE: MockItemDescriptor.java --- /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "MockObjects" must not be * used to endorse or promote products derived from this software * without prior written permission. For written permission, please * contact ap...@ap.... * * 5. Products derived from this software may not be called * "MockObjects", nor may "MockObjects" appear in their name, * without prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package com.mockobjects.atg.adapter.mock; import atg.beans.DynamicPropertyDescriptor; import atg.repository.ItemDescriptorImpl; import atg.repository.MutableRepositoryItem; import atg.repository.RepositoryException; import atg.repository.RepositoryItem; import atg.repository.RepositoryPropertyDescriptor; import atg.repository.RepositoryViewImpl; import com.mockobjects.atg.nucleus.logging.MockLogListener; import java.util.Collection; import java.util.Dictionary; import java.util.HashMap; import java.util.Map; /** * A mock repository item descriptor. * * @author Will Sargent * @version $Revision: 1.1 $ */ public class MockItemDescriptor extends ItemDescriptorImpl { Map mRepositoryItems = new HashMap(89); /** * Creates the item descriptor and repository view. * * @param repository * @param pItemDescriptorName DOCUMENT ME! */ public MockItemDescriptor(MockRepository repository, String pItemDescriptorName) { super(repository); setItemDescriptorName(pItemDescriptorName); MockRepositoryView view = new MockRepositoryView(this); view.setViewName(pItemDescriptorName); setRepositoryView(view); } /** * Sets all the property descriptors at once. * * @param pDescriptors * * @throws RepositoryException */ public void setPropertyDescriptors(RepositoryPropertyDescriptor[] pDescriptors) throws RepositoryException { for (int i = 0; i < pDescriptors.length; i++) { RepositoryPropertyDescriptor descriptor = pDescriptors[i]; mPropertyDescriptorTable.put(descriptor.getName(), descriptor); } updateDataStructures(); return; } /** * Creates and adds a property descriptor to the item descriptor. * * @param pPropertyName * @param pPropertyType * * @return DOCUMENT ME! * * @throws RepositoryException DOCUMENT ME! */ public MockPropertyDescriptor addPropertyDescriptor(String pPropertyName, Class pPropertyType) throws RepositoryException { MockPropertyDescriptor propDesc = new MockPropertyDescriptor(pPropertyName, pPropertyType); propDesc.setItemDescriptor(this); addPropertyDescriptor(propDesc); return propDesc; } /** * Gets the repository item from the item map. * * @param pRepositoryId * * @return DOCUMENT ME! */ MockRepositoryItem getRepositoryItem(String pRepositoryId) { MockRepositoryItem item = (MockRepositoryItem) mRepositoryItems.get(pRepositoryId); return item; } /** * Adds the repository item to the item map. * * @param pItem the item to add. * * @return DOCUMENT ME! */ MockRepositoryItem addRepositoryItem(MockRepositoryItem pItem) { mRepositoryItems.put(pItem.getRepositoryId(), pItem); return pItem; } /** * Removes the repository item from the item map. * * @param pRepositoryId */ void removeRepositoryItem(String pRepositoryId) { MockRepositoryItem item = (MockRepositoryItem) mRepositoryItems.remove(pRepositoryId); item.setRemoved(true); } /** * Updates the repository item. * * @param pItem */ void updateRepositoryItem(MutableRepositoryItem pItem) { mRepositoryItems.put(pItem.getRepositoryId(), pItem); } /** * Gets all the items in the map. * * @return */ RepositoryItem[] getItems() { Collection coll = mRepositoryItems.values(); MockRepositoryItem[] items = (MockRepositoryItem[]) coll.toArray(new MockRepositoryItem[0]); return items; } public Map getPropertyValuesMap(String pPropertyName) { MockPropertyDescriptor descriptor = (MockPropertyDescriptor) getPropertyDescriptor(pPropertyName); return descriptor.getMap(); } /** * Gets the mock repository view. * * @return */ public MockRepositoryView getMockRepositoryView() { return (MockRepositoryView) getRepositoryView(); } /** * Gets the mock repository. * * @return */ public MockRepository getMockRepository() { return (MockRepository) getRepository(); } //------------------------------------- /** * Get the <code>loggingWarning</code> property from our repository. * * @return loggingWarning */ boolean isLoggingWarning() { // pass through to repository MockRepository r = getMockRepository(); return (r != null) && r.isLoggingWarning(); } //------------------------------------- /** * Log an warning message through our repository. * * @param pMsg message to log */ void logWarning(String pMsg) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.logWarning(pMsg); } } //------------------------------------- /** * Log an warning message through our repository including and exception * * @param pMsg message to log * @param pThrowable exception to log */ void logWarning(String pMsg, Throwable pThrowable) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.logWarning(pMsg, pThrowable); } } //------------------------------------- /** * Log an exception through our repository * * @param pThrowable exception to log */ void logWarning(Throwable pThrowable) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.logWarning(pThrowable); } } //------------------------------------- /* * @return loggingDebug **/ public boolean isLoggingDebug() { // pass through to repository MockRepository r = getMockRepository(); return (r != null) && r.isLoggingDebug(); } //------------------------------------- /** * Log a debug message through our repository. * * @param pMsg message to log */ public void logDebug(String pMsg) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.logDebug(pMsg); } } //------------------------------------- /** * Log a debug exception through our repository. * * @param pThrowable exception to log */ public void logDebug(Throwable pThrowable) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.logDebug(pThrowable); } } //------------------------------------- /** * Log a detailed debug message through our repository at the specified * level. * * @param pMsg message to log * @param pLevel debug level required for this message to print */ public void debug(String pMsg, int pLevel) { // pass through to repository MockRepository r = getMockRepository(); if (r != null) { r.debug(pMsg, pLevel); } } } |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:04
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/service In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29365/src/extensions/com/mockobjects/atg/service Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/service added to the repository |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:04
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/nucleus/logging In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29365/src/extensions/com/mockobjects/atg/nucleus/logging Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/nucleus/logging added to the repository |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:04
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/service/pipeline In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29365/src/extensions/com/mockobjects/atg/service/pipeline Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/service/pipeline added to the repository |
From: Will S. <wsa...@us...> - 2005-05-07 23:34:04
|
Update of /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/servlet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29365/src/extensions/com/mockobjects/atg/servlet Log Message: Directory /cvsroot/mockobjects/mockobjects-java/src/extensions/com/mockobjects/atg/servlet added to the repository |