manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Piergiorgio Lucidi <piergiorgioluc...@gmail.com>
Subject Re: CMIS Connector - Tests
Date Thu, 04 Aug 2011 14:54:20 GMT
2011/8/4 Karl Wright <daddywri@gmail.com>

> Hmm, okay, then it must be something pretty strange.  Maybe jetty is
> getting starved of threads or something?
>

I think a similar problem...


> I wonder if you can start a second Jetty instance for the CMIS server.
>  That would eliminate any kind of jetty resource conflict.
>

I'm trying to set up a new Jetty instance dedicated to the CMIS server.


> Karl
>
> On Thu, Aug 4, 2011 at 10:23 AM, Piergiorgio Lucidi
> <piergiorgiolucidi@gmail.com> wrote:
> > 2011/8/4 Karl Wright <daddywri@gmail.com>
> >
> >> Sorry, I meant, "do the API sanity tests work properly for you when
> >> you run them on a clean trunk checkout"?
> >>
> >
> > The other tests yes, work correctly, only CMIS tests don't work.
> >
> >
> >>
> >> Karl
> >>
> >> On Thu, Aug 4, 2011 at 10:12 AM, Karl Wright <daddywri@gmail.com>
> wrote:
> >> > This is going to be complicated to debug.  I'm happy to help but yes,
> >> > we'll need a branch to work off of.  If you can attach the patch file
> >> > I'll try to set everything up this evening.
> >> >
> >> > Do the APISanity tests still work consistently on your setup?  The "No
> >> > current connection" error seems like it is coming from some very basic
> >> > level and I would expect it to appear with APISanity as well.
> >> >
> >> > The timeout indicates that the job is not completing.  If we can get
> >> > at the log when the test fails before they are cleaned up we will
> >> > probably learn why.
> >> >
> >> > Karl
> >> >
> >> >
> >> > On Thu, Aug 4, 2011 at 10:06 AM, Piergiorgio Lucidi
> >> > <piergiorgiolucidi@gmail.com> wrote:
> >> >> After some minutes sometimes it returns the following exception to
> check
> >> the
> >> >> timeout:
> >> >>
> >> >>  org.apache.manifoldcf.core.interfaces.ManifoldCFException:
> ManifoldCF
> >> did
> >> >>> not terminate in the allotted time of 120000 milliseconds
> >> >>> at org.apache.manifoldcf.cmis_tests.APISanityTest.waitJobInactive(
> >> >>> APISanityTest.java:529)
> >> >>> at org.apache.manifoldcf.cmis_tests.APISanityTest.sanityCheck(
> >> >>> APISanityTest.java:365)
> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(
> >> >>> NativeMethodAccessorImpl.java:39)
> >> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> >>> DelegatingMethodAccessorImpl.java:25)
> >> >>> at java.lang.reflect.Method.invoke(Method.java:597)
> >> >>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> >> >>> FrameworkMethod.java:44)
> >> >>> at org.junit.internal.runners.model.ReflectiveCallable.run(
> >> >>> ReflectiveCallable.java:15)
> >> >>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(
> >> >>> FrameworkMethod.java:41)
> >> >>> at org.junit.internal.runners.statements.InvokeMethod.evaluate(
> >> >>> InvokeMethod.java:20)
> >> >>> at org.junit.internal.runners.statements.RunBefores.evaluate(
> >> >>> RunBefores.java:28)
> >> >>> at org.junit.internal.runners.statements.RunAfters.evaluate(
> >> >>> RunAfters.java:31)
> >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(
> >> >>> BlockJUnit4ClassRunner.java:79)
> >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>> BlockJUnit4ClassRunner.java:71)
> >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>> BlockJUnit4ClassRunner.java:49)
> >> >>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >> >>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >> >>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >> >>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >> >>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >> >>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >> >>> at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(
> >> >>> JUnit4TestSet.java:53)
> >> >>> at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(
> >> >>> JUnit4Provider.java:123)
> >> >>> at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(
> >> >>> JUnit4Provider.java:104)
> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(
> >> >>> NativeMethodAccessorImpl.java:39)
> >> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> >>> DelegatingMethodAccessorImpl.java:25)
> >> >>> at java.lang.reflect.Method.invoke(Method.java:597)
> >> >>> at
> >> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(
> >> >>> ReflectionUtils.java:164)
> >> >>> at
> >> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(
> >> >>> ProviderFactory.java:110)
> >> >>> at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(
> >> >>> SurefireStarter.java:172)
> >> >>> at
> >> >>>
> >>
> org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(
> >> >>> SurefireStarter.java:78)
> >> >>> at
> >> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70
> >> >>> )
> >> >>
> >> >>
> >> >>
> >> >> 2011/8/4 Piergiorgio Lucidi <piergiorgiolucidi@gmail.com>
> >> >>
> >> >>> Hi Karl,
> >> >>>
> >> >>> the integration test implementation is finished and it works fine
> using
> >> the
> >> >>> public Alfresco CMIS server.
> >> >>>
> >> >>> But now that I'm using the OpenCMIS InMemory Repository, deployed in
> >> the
> >> >>> same Jetty instance of Manifold, I have a problem, it seems that
> >> starting
> >> >>> test from the Maven goal, the test can't startup any job, that stay
> in
> >> >>> starting state without moving on.
> >> >>>
> >> >>> Sometimes it returns the following exception during the startup:
> >> >>>
> >> >>>> 2011-08-04 16:00:26.172:INFO::Started SocketConnector@0.0.0.0:8346
> >> >>>> java.lang.Exception: API http error; expected 201, saw 200:
> >> {"error":"No
> >> >>>> current connection."}
> >> >>>> at org.apache.manifoldcf.cmis_tests.Base.performAPIPutOperation(
> >> >>>> Base.java:208)
> >> >>>> at
> >> org.apache.manifoldcf.cmis_tests.Base.performAPIPutOperationViaNodes(
> >> >>>> Base.java:271)
> >> >>>> at org.apache.manifoldcf.cmis_tests.APISanityTest.sanityCheck(
> >> >>>> APISanityTest.java:264)
> >> >>>>
> >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(
> >> >>>> NativeMethodAccessorImpl.java:39)
> >> >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> >>>> DelegatingMethodAccessorImpl.java:25)
> >> >>>> at java.lang.reflect.Method.invoke(Method.java:597)
> >> >>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> >> >>>> FrameworkMethod.java:44)
> >> >>>> at org.junit.internal.runners.model.ReflectiveCallable.run(
> >> >>>> ReflectiveCallable.java:15)
> >> >>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(
> >> >>>> FrameworkMethod.java:41)
> >> >>>> at org.junit.internal.runners.statements.InvokeMethod.evaluate(
> >> >>>> InvokeMethod.java:20)
> >> >>>> at org.junit.internal.runners.statements.RunBefores.evaluate(
> >> >>>> RunBefores.java:28)
> >> >>>>
> >> >>>> at org.junit.internal.runners.statements.RunAfters.evaluate(
> >> >>>> RunAfters.java:31)
> >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(
> >> >>>> BlockJUnit4ClassRunner.java:79)
> >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>>> BlockJUnit4ClassRunner.java:71)
> >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>>> BlockJUnit4ClassRunner.java:49)
> >> >>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >> >>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >> >>>> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >> >>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >> >>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >> >>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >> >>>>  at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(
> >> >>>> JUnit4TestSet.java:53)
> >> >>>> at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(
> >> >>>> JUnit4Provider.java:123)
> >> >>>> at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(
> >> >>>> JUnit4Provider.java:104)
> >> >>>>
> >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(
> >> >>>> NativeMethodAccessorImpl.java:39)
> >> >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> >>>> DelegatingMethodAccessorImpl.java:25)
> >> >>>> at java.lang.reflect.Method.invoke(Method.java:597)
> >> >>>> at
> >> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(
> >> >>>> ReflectionUtils.java:164)
> >> >>>> at
> >> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(
> >> >>>> ProviderFactory.java:110)
> >> >>>> at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(
> >> >>>> SurefireStarter.java:172)
> >> >>>> at
> >> >>>>
> >>
> org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(
> >> >>>> SurefireStarter.java:78)
> >> >>>> at org.apache.maven.surefire.booter.ForkedBooter.main(
> >> >>>> ForkedBooter.java:70)
> >> >>>
> >> >>>
> >> >>>
> >> >>> Starting the test from Eclipse it works fine.
> >> >>> Maybe it could be useful to create a branch to solve this problem,
> to
> >> >>> investigate together.
> >> >>>
> >> >>> Then I could attach my patch for integration tests.
> >> >>> Can you help me?
> >> >>>
> >> >>> Let me know.
> >> >>> Thank you for your support.
> >> >>>
> >> >>> Piergiorgio
> >> >>>
> >> >>> 2011/8/4 Karl Wright <daddywri@gmail.com>
> >> >>>
> >> >>>> Thanks for the update.  Let me know if there's anything I can do to
> >> help.
> >> >>>>
> >> >>>> Karl
> >> >>>>
> >> >>>> On Thu, Aug 4, 2011 at 4:10 AM, Piergiorgio Lucidi
> >> >>>> <piergiorgiolucidi@gmail.com> wrote:
> >> >>>> > I found a solution to create the right configuration for the CMIS
> >> >>>> Repository
> >> >>>> > Connector in the integration test code, and now it works ;)
> >> >>>> >
> >> >>>> > Chemistry guys are supporting me about an issue that I have found
> in
> >> the
> >> >>>> > OpenCMIS InMemory Repository that I would like to use in the
> >> integration
> >> >>>> > test for Manifold.
> >> >>>> >
> >> >>>> > Now I'm finishing the integration test implementation using the
> >> public
> >> >>>> > Alfresco CMIS server. Then I can start to test this new version
> of
> >> the
> >> >>>> > InMemory Repository with the bugfix provided by Jens. And I have
> to
> >> >>>> follow
> >> >>>> > some useful suggestions provided by Florian.
> >> >>>> >
> >> >>>> > I'll let you know soon about all these tasks.
> >> >>>> >
> >> >>>> > Piergiorgio
> >> >>>> >
> >> >>>> > ---------- Forwarded message ----------
> >> >>>> > From: Jens Hübel <jhuebel@opentext.com>
> >> >>>> > Date: 2011/8/4
> >> >>>> > Subject: RE: CMIS and Lucene
> >> >>>> > To: dev@chemistry.apache.org
> >> >>>> >
> >> >>>> >
> >> >>>> > Hi Piergiorgio,
> >> >>>> >
> >> >>>> > you are right. I could reproduce the problem. There is a bug in
> the
> >> >>>> query
> >> >>>> > implementation of the InMemory server if you query for predefined
> >> >>>> properties
> >> >>>> > like cmis:name, cmis:createdBy, etc. :-(
> >> >>>> >
> >> >>>> > I have fixed this, so hopefully this works for you now if you
> take
> >> the
> >> >>>> > latest build. I have created CMIS-413 for this (
> >> >>>> > https://issues.apache.org/jira/browse/CMIS-414). Please reopen
> if
> >> you
> >> >>>> still
> >> >>>> > have issues.
> >> >>>> >
> >> >>>> > One more note: Your test code is quite fragile if you use a fixed
> >> name
> >> >>>> for
> >> >>>> > your test document/folder. This implementation does not allow
> >> multiple
> >> >>>> > objects with the same name in one folder. This means unless you
> >> restart
> >> >>>> the
> >> >>>> > server your code will work only once. I recommend you using a
> random
> >> >>>> UUID as
> >> >>>> > name or something like that. In the default configuration the
> >> InMemory
> >> >>>> > creates a tree of document and folders by default. So it might
> not
> >> be
> >> >>>> > necessary to create objects at all (use the Workbench to take a
> look
> >> at
> >> >>>> > that). If you really need this reproducible behavior there is an
> >> option
> >> >>>> to
> >> >>>> > run the server using the local binding in the same Java VM. Then
> you
> >> can
> >> >>>> > restart the server with each test. The InMemory JUnit tests use
> this
> >> >>>> > mechanism. I do not recommend this however, because you bypass
> the
> >> whole
> >> >>>> > protocol layer for AtomPub/SOAP. This leaves many issues
> undetected
> >> a
> >> >>>> client
> >> >>>> > may see in a real connection later (and of course you lose the
> >> option to
> >> >>>> > switch to another CMIS server just by changing configuration).
> >> >>>> >
> >> >>>> > Jens
> >> >>>> >
> >> >>>> >
> >> >>>> > -----Original Message-----
> >> >>>> > From: Piergiorgio Lucidi [mailto:piergiorgiolucidi@gmail.com]
> >> >>>> > Sent: Mittwoch, 3. August 2011 14:48
> >> >>>> > To: dev@chemistry.apache.org
> >> >>>> > Subject: Re: CMIS and Lucene
> >> >>>> >
> >> >>>> > Hi Jens,
> >> >>>> >
> >> >>>> > here the code of my integration test that is used to create some
> >> content
> >> >>>> in
> >> >>>> > the InMemory Repository, the OpenCMIS server is running because
> it
> >> is
> >> >>>> > bootstrapped by Jetty / Maven. The CMIS Repository Connector
> works
> >> fine
> >> >>>> with
> >> >>>> > Alfresco 3.4d Community, but I would like to have the OpenCMIS
> >> server in
> >> >>>> the
> >> >>>> > test suite.
> >> >>>> >
> >> >>>> > In the following snippet I started to initialize the test
> >> environment
> >> >>>> with a
> >> >>>> > new folder with a new content, here I don't have any problem, it
> >> works
> >> >>>> with
> >> >>>> > the InMemory Repository:
> >> >>>> >
> >> >>>> >  private Session getCmisClientSession(){
> >> >>>> >>     // default factory implementation
> >> >>>> >>     SessionFactory factory = SessionFactoryImpl.newInstance();
> >> >>>> >>     Map<String, String> parameters = new HashMap<String,
> String>();
> >> >>>> >>     // user credentials
> >> >>>> >>     parameters.put(SessionParameter.USER, "dummyuser");
> >> >>>> >>     parameters.put(SessionParameter.PASSWORD, "dummysecret");
> >> >>>> >>     // connection settings
> >> >>>> >>     parameters.put(SessionParameter.ATOMPUB_URL,
> >> >>>> CMIS_ENDPOINT_TEST_SERVER
> >> >>>> >> );
> >> >>>> >>     parameters.put(SessionParameter.BINDING_TYPE,
> >> BindingType.ATOMPUB
> >> >>>> >> .value());
> >> >>>> >>     // create session
> >> >>>> >>     return
> >> factory.getRepositories(parameters).get(0).createSession();
> >> >>>> >>   }
> >> >>>> >>  @Before
> >> >>>> >>   public void createTestArea()
> >> >>>> >>     throws Exception
> >> >>>> >>   {
> >> >>>> >>     try
> >> >>>> >>     {
> >> >>>> >>       Session session = getCmisClientSession();
> >> >>>> >>       //creating a new folder
> >> >>>> >>       Folder root = session.getRootFolder();
> >> >>>> >>       Map<String, Object> folderProperties = new HashMap<String,
> >> >>>> >> Object>();
> >> >>>> >>       folderProperties.put(PropertyIds.OBJECT_TYPE_ID,
> >> "cmis:folder");
> >> >>>> >>       folderProperties.put(PropertyIds.NAME, "testdata");
> >> >>>> >>
> >> >>>> >>       Folder newFolder = root.createFolder(folderProperties);
> >> >>>> >>       //create a new content in the folder
> >> >>>> >>       String name = "testdata1.txt";
> >> >>>> >>       // properties
> >> >>>> >>       // (minimal set: name and object type id)
> >> >>>> >>       Map<String, Object> contentProperties = new
> HashMap<String,
> >> >>>> >> Object>();
> >> >>>> >>       contentProperties.put(PropertyIds.OBJECT_TYPE_ID,
> >> >>>> "cmis:document");
> >> >>>> >>       contentProperties.put(PropertyIds.NAME, name);
> >> >>>> >>
> >> >>>> >>       // content
> >> >>>> >>       byte[] content = "CMIS Testdata One".getBytes();
> >> >>>> >>       InputStream stream = new ByteArrayInputStream(content);
> >> >>>> >>       ContentStream contentStream = new ContentStreamImpl(name,
> >> >>>> > newBigInteger(content),
> >> >>>> >> "text/plain", stream);
> >> >>>> >>
> >> >>>> >>        // create a major version
> >> >>>> >>       Document newContent1 =
> >> >>>> newFolder.createDocument(contentProperties,
> >> >>>> >> contentStream, null);
> >> >>>> >
> >> >>>> >
> >> >>>> > But if I try to search the new content in the InMemory
> Repository,
> >> in
> >> >>>> the
> >> >>>> > same way I implemented in the CMIS Repository Connector:
> >> >>>> >
> >> >>>> >  ItemIterable<QueryResult> results = session.query("SELECT * FROM
> >> >>>> >> cmis:folder WHERE cmis:name='testdata'", false);
> >> >>>> >>       for (QueryResult result : results) {
> >> >>>> >>         String id =
> >> result.getPropertyValueById(PropertyIds.OBJECT_ID);
> >> >>>> >>       }
> >> >>>> >
> >> >>>> >
> >> >>>> >
> >> >>>> > It returns the following exception:
> >> >>>> >
> >> >>>> >
> >>  org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException:
> >> >>>> null
> >> >>>> >> at
> >> >>>> >>
> >> >>>> >
> >> >>>>
> >>
> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(
> >> >>>> >> AbstractAtomPubService.java:450)
> >> >>>> >> at
> >> >>>> >>
> >> >>>> >
> >> >>>>
> >>
> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post(
> >> >>>> >> AbstractAtomPubService.java:568)
> >> >>>> >> at
> >> >>>> >>
> >> >>>> >
> >> >>>>
> >>
> org.apache.chemistry.opencmis.client.bindings.spi.atompub.DiscoveryServiceImpl.query(
> >> >>>> >> DiscoveryServiceImpl.java:141)
> >> >>>> >> at
> >> >>>>
> org.apache.chemistry.opencmis.client.runtime.SessionImpl$3.fetchPage(
> >> >>>> >> SessionImpl.java:557)
> >> >>>> >> at
> >> >>>> >>
> >> >>>> >
> >> >>>>
> >>
> org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getCurrentPage(
> >> >>>> >> AbstractIterator.java:132)
> >> >>>> >> at
> >> >>>> >>
> >> >>>> >
> >> >>>>
> >>
> org.apache.chemistry.opencmis.client.runtime.util.CollectionIterator.hasNext(
> >> >>>> >> CollectionIterator.java:48)
> >> >>>> >> at
> org.apache.manifoldcf.cmis_tests.APISanityTest.createTestArea(
> >> >>>> >> APISanityTest.java:139)
> >> >>>> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> >>>> >> at sun.reflect.NativeMethodAccessorImpl.invoke(
> >> >>>> >> NativeMethodAccessorImpl.java:39)
> >> >>>> >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> >> >>>> >> DelegatingMethodAccessorImpl.java:25)
> >> >>>> >> at java.lang.reflect.Method.invoke(Method.java:597)
> >> >>>> >> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> >> >>>> >> FrameworkMethod.java:44)
> >> >>>> >> at org.junit.internal.runners.model.ReflectiveCallable.run(
> >> >>>> >> ReflectiveCallable.java:15)
> >> >>>> >> at org.junit.runners.model.FrameworkMethod.invokeExplosively(
> >> >>>> >> FrameworkMethod.java:41)
> >> >>>> >> at org.junit.internal.runners.statements.RunBefores.evaluate(
> >> >>>> >> RunBefores.java:27)
> >> >>>> >> at org.junit.internal.runners.statements.RunAfters.evaluate(
> >> >>>> >> RunAfters.java:31)
> >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(
> >> >>>> >> BlockJUnit4ClassRunner.java:79)
> >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>>> >> BlockJUnit4ClassRunner.java:71)
> >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runChild(
> >> >>>> >> BlockJUnit4ClassRunner.java:49)
> >> >>>> >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >> >>>> >> at
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >> >>>> >> at
> >> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >> >>>> >> at
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >> >>>> >> at
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >> >>>> >> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >> >>>> >> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(
> >> >>>> >> JUnit4TestReference.java:49)
> >> >>>> >> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
> >> >>>> >> TestExecution.java:38)
> >> >>>> >> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> >> >>>> >> RemoteTestRunner.java:467)
> >> >>>> >> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> >> >>>> >> RemoteTestRunner.java:683)
> >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
> >> >>>> >> RemoteTestRunner.java:390)
> >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> >> >>>> >> RemoteTestRunner.java:197)
> >> >>>> >
> >> >>>> >
> >> >>>> > Let me know if you have any hints!
> >> >>>> >
> >> >>>> > Thank you again for your support.
> >> >>>> >
> >> >>>> > Regards,
> >> >>>> >
> >> >>>> > Piergiorgio
> >> >>>> >
> >> >>>> > 2011/8/3 Jens Hübel <jhuebel@opentext.com>
> >> >>>> >
> >> >>>> >> Hi Pergiorio,
> >> >>>> >>
> >> >>>> >> do you have a code piece that I can take a look at? What is your
> >> client
> >> >>>> >> API? Do you connect to Chemistry client API
> >> >>>> > (chemistry-opencmis-client-api)?
> >> >>>> >> Or perhaps you can grab the query sent from the log file?
> >> >>>> >>
> >> >>>> >> Thanks Jens
> >> >>>> >>
> >> >>>> >>
> >> >>>> >> -----Original Message-----
> >> >>>> >> From: Piergiorgio Lucidi [mailto:piergiorgiolucidi@gmail.com]
> >> >>>> >> Sent: Mittwoch, 3. August 2011 13:22
> >> >>>> >> To: dev@chemistry.apache.org
> >> >>>> >> Subject: Re: CMIS and Lucene
> >> >>>> >>
> >> >>>> >> Hi Jens,
> >> >>>> >>
> >> >>>> >> I contributed to the Apache ManifoldCF (ex Lucene Connector
> >> Framework)
> >> >>>> >> project implementing the CMIS Connector using OpenCMIS 0.4.0.
> >> >>>> >>
> >> >>>> >> Now I'm working on integration test trying to use the OpenCMIS
> >> InMemory
> >> >>>> >> Repository that is available from Apache Chemistry ;)
> >> >>>> >>
> >> >>>> >> I have some problems because now I'm finishing my test
> >> implementation
> >> >>>> but
> >> >>>> >> it
> >> >>>> >> seems that I can't execute queries on the InMemory Repository,
> it
> >> >>>> returns
> >> >>>> > a
> >> >>>> >> null string in the convertStatusCode method.
> >> >>>> >>
> >> >>>> >> The CMIS Repository Connector that I implemented for ManifoldCF
> has
> >> a
> >> >>>> job
> >> >>>> >> parameter that is the CMIS Query, this parameter is used by
> agents
> >> to
> >> >>>> >> select
> >> >>>> >> all the contents that needs to be indexed on the Output
> Connector
> >> (for
> >> >>>> >> example Apache Solr).
> >> >>>> >> Without a query feature exposed by the InMemory Repository I
> can't
> >> test
> >> >>>> > the
> >> >>>> >> connector in the right way.
> >> >>>> >>
> >> >>>> >> I tried to use the latest version of the InMemory Repository
> >> >>>> >> (0.5.0-SNAPSHOT) but with the same result.
> >> >>>> >>
> >> >>>> >> Have you got any ideas to solve this problem?
> >> >>>> >> Thank you for your support.
> >> >>>> >>
> >> >>>> >> Regards,
> >> >>>> >> Piergiorgio
> >> >>>> >>
> >> >>>> >>
> >> >>>> >> 2011/8/3 Jens Hübel <jhuebel@opentext.com>
> >> >>>> >>
> >> >>>> >> > Hi Chemistries,
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> > is anyone of us already involved in the Lucene project?
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> > Reading this here
> >> >>>> >> >
> >> http://search-lucene.com/m/wI38e1K3BWJ&subj=Re+CMIS+Connector+Tests
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> > I think it would make sense to give them an introduction to
> what
> >> we
> >> >>>> > have.
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> > if I understand this correctly one of the options they discuss
> is
> >> to
> >> >>>> >> create
> >> >>>> >> > an InMemory mock server. It does not make much sense to
> duplicate
> >> >>>> what
> >> >>>> > we
> >> >>>> >> > already have (and if we need getContentChanges() for that I am
> >> happy
> >> >>>> to
> >> >>>> >> > implement this).
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> > Jens
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >> >
> >> >>>> >>
> >> >>>> >>
> >> >>>> >> --
> >> >>>> >> Piergiorgio Lucidi
> >> >>>> >> Web: http://about.me/piergiorgiolucidi
> >> >>>> >>
> >> >>>> >
> >> >>>> >
> >> >>>> >
> >> >>>> > --
> >> >>>> > Piergiorgio Lucidi
> >> >>>> > Web: http://about.me/piergiorgiolucidi
> >> >>>> >
> >> >>>> >
> >> >>>> >
> >> >>>> > --
> >> >>>> > Piergiorgio Lucidi
> >> >>>> > Web: http://about.me/piergiorgiolucidi
> >> >>>> >
> >> >>>> > 2011/8/3 Piergiorgio Lucidi <piergiorgiolucidi@gmail.com>
> >> >>>> >
> >> >>>> >> Yes, this is a very quick way to test my configuration code for
> the
> >> >>>> >> integration test ;)
> >> >>>> >> I'm going to fix this part, I saw what I need in the JSON
> retrieved
> >> by
> >> >>>> a
> >> >>>> >> GET call against the Manifold API service.
> >> >>>> >>
> >> >>>> >> I'll let you know tomorrow an update about this.
> >> >>>> >>
> >> >>>> >> Anyway we have a problem with the OpenCMIS InMemory server. It
> >> seems
> >> >>>> that
> >> >>>> >> there is a problem during the execution of CMIS queries, I
> notified
> >> the
> >> >>>> >> problem to the Chemistry guys (Jens Hubel and Florian Muller)
> and
> >> they
> >> >>>> are
> >> >>>> >> trying to reproduce the issue to solve our problem.
> >> >>>> >>
> >> >>>> >> I'm going on developing the code using the public Alfresco CMIS
> >> server
> >> >>>> >> exposed at the following address:
> >> >>>> >> http://cmis.alfresco.com
> >> >>>> >>
> >> >>>> >> Piergiorgio
> >> >>>> >>
> >> >>>> >>
> >> >>>> >> 2011/8/3 Karl Wright <daddywri@gmail.com>
> >> >>>> >>
> >> >>>> >>> Another good way to see exactly what you need to do is to call
> the
> >> API
> >> >>>> >>> to get configuration information for an existing connection.
> >>  Then,
> >> >>>> >>> use the toXML() method to convert to XML, or the toJSON() to
> get
> >> it as
> >> >>>> >>> JSON.  Either way you will see the structure.  BTW, ManifoldCF
> in
> >> >>>> >>> Action Chapter 3 covers this in great detail as well.
> >> >>>> >>>
> >> >>>> >>> Karl
> >> >>>> >>>
> >> >>>> >>> On Wed, Aug 3, 2011 at 12:50 PM, Karl Wright <
> daddywri@gmail.com>
> >> >>>> wrote:
> >> >>>> >>> > The ConfigParams class is, I believe, derived from the
> >> Configuration
> >> >>>> >>> > class.  So, you can create a ConfigParams object instead of a
> >> >>>> >>> > Configuration object if you want to use the API in the manner
> >> you
> >> >>>> >>> > describe.
> >> >>>> >>> >
> >> >>>> >>> > The reason your commented-out code doesn't work is because
> the
> >> >>>> >>> > setParameter() method isn't doing quite what you are
> expecting.
> >> >>>>  It's
> >> >>>> >>> > creating a node named "_PARAMETER_" with a "name" attribute
> and
> >> a
> >> >>>> >>> > value area, and you are creating nodes named by the parameter
> >> name.
> >> >>>> >>> >
> >> >>>> >>> > Karl
> >> >>>> >>> >
> >> >>>> >>> > On Wed, Aug 3, 2011 at 12:41 PM, Piergiorgio Lucidi
> >> >>>> >>> > <piergiorgiolucidi@gmail.com> wrote:
> >> >>>> >>> >> I'm trying to implement tests but I found a problem to set
> all
> >> the
> >> >>>> >>> needed
> >> >>>> >>> >> parameters to the CMIS Repository Connector that needs: an
> >> >>>> username, a
> >> >>>> >>> >> password and the endpoint (url).
> >> >>>> >>> >>
> >> >>>> >>> >> I need to know how to create the configuration nodes for the
> >> >>>> connector,
> >> >>>> >>> in
> >> >>>> >>> >> the connector code I managed the configuration parameters in
> >> this
> >> >>>> way
> >> >>>> >>> in the
> >> >>>> >>> >> processConfigurationPost method:
> >> >>>> >>> >>
> >> >>>> >>> >>  public String processConfigurationPost(IThreadContext
> >> >>>> threadContext,
> >> >>>> >>> >>>       IPostParameters variableContext, ConfigParams
> >> parameters)
> >> >>>> >>> >>>       throws ManifoldCFException {
> >> >>>> >>> >>>     String username =
> >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_USERNAME);
> >> >>>> >>> >>>     if (StringUtils.isNotEmpty(username))
> >> >>>> >>> >>>       parameters.setParameter(CONFIG_PARAM_USERNAME,
> >> username);
> >> >>>> >>> >>>     String password =
> >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_PASSWORD);
> >> >>>> >>> >>>     if (StringUtils.isNotEmpty(password))
> >> >>>> >>> >>>       parameters.setParameter(CONFIG_PARAM_PASSWORD,
> >> password);
> >> >>>> >>> >>>     String endpoint =
> >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_ENDPOINT);
> >> >>>> >>> >>>     if (StringUtils.isNotEmpty(endpoint) &&
> endpoint.length()
> >> > 0)
> >> >>>> >>> >>>       parameters.setParameter(CONFIG_PARAM_ENDPOINT,
> >> endpoint);
> >> >>>> >>> >>>     String repositoryId = variableContext
> >> >>>> >>> >>>         .getParameter(CONFIG_PARAM_REPOSITORY_ID);
> >> >>>> >>> >>>     if (StringUtils.isNotEmpty(repositoryId))
> >> >>>> >>> >>>       parameters.setParameter(CONFIG_PARAM_REPOSITORY_ID,
> >> >>>> >>> repositoryId);
> >> >>>> >>> >>>     return null;
> >> >>>> >>> >>>   }
> >> >>>> >>> >>
> >> >>>> >>> >>
> >> >>>> >>> >> Now I have to setup the same parameters inside my test class
> >> >>>> >>> APISanityTest
> >> >>>> >>> >> that doesn't like the following snippet, it works only if
> CMIS
> >> >>>> >>> parameters
> >> >>>> >>> >> are commented as the following:
> >> >>>> >>> >>
> >> >>>> >>> >>  @Test
> >> >>>> >>> >>>   public void sanityCheck()
> >> >>>> >>> >>>     throws Exception
> >> >>>> >>> >>>   {
> >> >>>> >>> >>>     try
> >> >>>> >>> >>>     {
> >> >>>> >>> >>>       // Hey, we were able to install the file system
> >> connector
> >> >>>> etc.
> >> >>>> >>> >>>       // Now, create a local test job and run it.
> >> >>>> >>> >>>       IThreadContext tc = ThreadContextFactory.make();
> >> >>>> >>> >>>       int i;
> >> >>>> >>> >>>       IJobManager jobManager = JobManagerFactory.make(tc);
> >> >>>> >>> >>>       // Create a basic file system connection, and save
> it.
> >> >>>> >>> >>>       ConfigurationNode connectionObject;
> >> >>>> >>> >>>       ConfigurationNode child;
> >> >>>> >>> >>>       Configuration requestObject;
> >> >>>> >>> >>>       Configuration result;
> >> >>>> >>> >>>
> >> >>>> >>> >>>       connectionObject = new
> >> >>>> >>> ConfigurationNode("repositoryconnection");
> >> >>>> >>> >>>
> >> >>>> >>> >>>       child = new ConfigurationNode("name");
> >> >>>> >>> >>>       child.setValue("CMIS Connection");
> >> >>>> >>> >>>
> >> >>>> >>>
> connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>>
> >> >>>> >>> >>>       child = new ConfigurationNode("class_name");
> >> >>>> >>> >>>       child.setValue(
> >> >>>> >>> >>>
> >> >>>> >>>
> >> >>>>
> >>
> "org.apache.manifoldcf.crawler.connectors.cmis.CmisRepositoryConnector");
> >> >>>> >>> >>>
> >> >>>> >>>
> connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>>
> >> >>>> >>> >>>       child = new ConfigurationNode("description");
> >> >>>> >>> >>>       child.setValue("CMIS Connection");
> >> >>>> >>> >>>
> >> >>>> >>>
> connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>>       child = new ConfigurationNode("max_connections");
> >> >>>> >>> >>>       child.setValue("10");
> >> >>>> >>> >>>
> >> >>>> >>>
> connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>>
> >> >>>> >>> >>>       //setting the CMIS specific parameters
> >> >>>> >>> >>> //      child = new ConfigurationNode("username");
> >> >>>> >>> >>> //      child.setValue(CMIS_USERNAME);
> >> >>>> >>> >>> //
> >> >>>> >>>
> >>  connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>> //
> >> >>>> >>> >>> //      child = new ConfigurationNode("password");
> >> >>>> >>> >>> //      child.setValue(CMIS_PASSWORD);
> >> >>>> >>> >>> //
> >> >>>> >>>
> >>  connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>> //
> >> >>>> >>> >>> //      child = new ConfigurationNode("endpoint");
> >> >>>> >>> >>> //      child.setValue(CMIS_ENDPOINT_TEST_SERVER);
> >> >>>> >>> >>> //
> >> >>>> >>>
> >>  connectionObject.addChild(connectionObject.getChildCount(),child);
> >> >>>> >>> >>>       requestObject = new Configuration();
> >> >>>> >>> >>>       requestObject.addChild(0,connectionObject);
> >> >>>> >>> >>>
> >> >>>> >>> >>>       result = performAPIPutOperationViaNodes(
> >> >>>> >>> >>>
> "repositoryconnections/CMIS%20Connection",201,requestObject);
> >> >>>> >>> >>
> >> >>>> >>> >>
> >> >>>> >>> >> How can I set the username, password and endpoint for the
> CMIS
> >> >>>> >>> Repository
> >> >>>> >>> >> Connector parameters in this test class?
> >> >>>> >>> >>
> >> >>>> >>> >> Thank you.
> >> >>>> >>> >>
> >> >>>> >>> >> Piergiorgio
> >> >>>> >>> >>
> >> >>>> >>> >>
> >> >>>> >>> >> 2011/8/2 Karl Wright <daddywri@gmail.com>
> >> >>>> >>> >>
> >> >>>> >>> >>> Thanks for the status report.  I hope to see your patch
> soon!
> >> >>>> >>> >>>
> >> >>>> >>> >>> Also, FWIW, once the documentation is also done I'd like to
> >> >>>> consider
> >> >>>> >>> >>> solidifying the 0.3 release.  It's got a lot of good stuff
> in
> >> it
> >> >>>> and I
> >> >>>> >>> >>> think as soon as we've finished off the new CMIS connector
> in
> >> all
> >> >>>> >>> >>> dimensions we should go ahead.  Thoughts, anyone?
> >> >>>> >>> >>>
> >> >>>> >>> >>> Karl
> >> >>>> >>> >>>
> >> >>>> >>> >>>
> >> >>>> >>> >>> On Tue, Aug 2, 2011 at 5:00 AM, Piergiorgio Lucidi
> >> >>>> >>> >>> <piergiorgiolucidi@gmail.com> wrote:
> >> >>>> >>> >>> > Yesterday I started to work on end-to-end integration
> test
> >> for
> >> >>>> the
> >> >>>> >>> CMIS
> >> >>>> >>> >>> > Connector and now I have a full running OpenCMIS test
> server
> >> >>>> >>> integrated
> >> >>>> >>> >>> with
> >> >>>> >>> >>> > the ManifoldCF Maven build process.
> >> >>>> >>> >>> >
> >> >>>> >>> >>> > Now I have to implement:
> >> >>>> >>> >>> > - a setup method to create the test documents in the CMIS
> >> server
> >> >>>> >>> >>> > - a null output connector using the ManifoldCF api
> >> >>>> >>> >>> > - tests using the ManifoldCF api to create a mock
> >> configuration
> >> >>>> >>> against
> >> >>>> >>> >>> the
> >> >>>> >>> >>> > test CMIS server
> >> >>>> >>> >>> >
> >> >>>> >>> >>> > I'll let you know when it works.
> >> >>>> >>> >>> >
> >> >>>> >>> >>> > Regards,
> >> >>>> >>> >>> > Piergiorgio
> >> >>>> >>> >>> >
> >> >>>> >>> >>> > 2011/7/29 Piergiorgio Lucidi <
> piergiorgiolucidi@gmail.com>
> >> >>>> >>> >>> >
> >> >>>> >>> >>> >> Hi Karl,
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >> thank you for the details and as soon as I finish a
> first
> >> >>>> version
> >> >>>> >>> of
> >> >>>> >>> >>> >> integration and/or unit test I will create a new ticket
> in
> >> the
> >> >>>> CMIS
> >> >>>> >>> >>> >> Component to release the patch.
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >> I hope to release this new patch soon.
> >> >>>> >>> >>> >> I'll let you know during the next week.
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >> Piergiorgio
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >> 2011/7/28 Karl Wright <daddywri@gmail.com>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >>> The tests/filesystem/src/test/java area are end-to-end
> >> tests
> >> >>>> >>> >>> >>> principally designed to test the filesystem connector.
> >>  (They
> >> >>>> also
> >> >>>> >>> >>> >>> involve other connectors because, obviously, an
> end-to-end
> >> >>>> test is
> >> >>>> >>> not
> >> >>>> >>> >>> >>> going going to work without them.  This is why they are
> at
> >> the
> >> >>>> >>> root
> >> >>>> >>> >>> >>> level.)
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> There are also unit tests you can use as models under
> >> >>>> >>> >>> >>> connectors/filesystem/connector/src/test/....  These
> tests
> >> use
> >> >>>> >>> only
> >> >>>> >>> >>> >>> the filesystem connector, no others.
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> If you would be so kind as to create a ticket to cover
> >> your
> >> >>>> test
> >> >>>> >>> work,
> >> >>>> >>> >>> >>> that would be great.
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> Also, another workitem I've been meaning to get to but
> >> haven't
> >> >>>> >>> >>> >>> involves the conversion of a python-based HTML browser
> and
> >> >>>> >>> Javascript
> >> >>>> >>> >>> >>> engine I wrote for MetaCarta into a Java equivalent.
>  This
> >> >>>> would
> >> >>>> >>> allow
> >> >>>> >>> >>> >>> direct testing of the UI components of the framework
> and
> >> >>>> >>> connectors.
> >> >>>> >>> >>> >>> The python sources are in:
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> legacy-tests/VirtualBrowser.py
> >> >>>> >>> >>> >>> and
> >> >>>> >>> >>> >>> legacy-tests/Javascript.py
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> You may not have time to get that far for a while, but
> I
> >> >>>> thought
> >> >>>> >>> you'd
> >> >>>> >>> >>> >>> want to know where my thoughts were headed. ;-)
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> Karl
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>> On Thu, Jul 28, 2011 at 2:03 PM, Piergiorgio Lucidi
> >> >>>> >>> >>> >>> <piergiorgiolucidi@gmail.com> wrote:
> >> >>>> >>> >>> >>> > I'm starting to think a way to implement tests for
> the
> >> CMIS
> >> >>>> >>> >>> Connector,
> >> >>>> >>> >>> >>> > probably I can use the Apache Chemistry (OpenCMIS)
> local
> >> >>>> binding
> >> >>>> >>> to
> >> >>>> >>> >>> >>> create a
> >> >>>> >>> >>> >>> > mock of a CMIS Server (an InMemory repository), but I
> >> have
> >> >>>> to
> >> >>>> >>> check
> >> >>>> >>> >>> this
> >> >>>> >>> >>> >>> > possibility because I'm not sure that all the
> features
> >> are
> >> >>>> now
> >> >>>> >>> >>> >>> implemented.
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>> > Anyway I saw some test classes for the filesystem
> >> connector
> >> >>>> at
> >> >>>> >>> the
> >> >>>> >>> >>> >>> following
> >> >>>> >>> >>> >>> > package:
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>> > tests/filesystem/src/test/java
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>> > Could you please confirm that these classes could be
> >> taken
> >> >>>> as an
> >> >>>> >>> >>> example
> >> >>>> >>> >>> >>> for
> >> >>>> >>> >>> >>> > tests?
> >> >>>> >>> >>> >>> > Or do I need to take a look at other classes?
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>> > Thank you.
> >> >>>> >>> >>> >>> > Piergiorgio
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>> > --
> >> >>>> >>> >>> >>> > Piergiorgio Lucidi
> >> >>>> >>> >>> >>> > Web: http://about.me/piergiorgiolucidi
> >> >>>> >>> >>> >>> >
> >> >>>> >>> >>> >>>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >> --
> >> >>>> >>> >>> >> Piergiorgio Lucidi
> >> >>>> >>> >>> >> Web: http://about.me/piergiorgiolucidi
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >>
> >> >>>> >>> >>> >
> >> >>>> >>> >>> >
> >> >>>> >>> >>> > --
> >> >>>> >>> >>> > Piergiorgio Lucidi
> >> >>>> >>> >>> > Web: http://about.me/piergiorgiolucidi
> >> >>>> >>> >>> >
> >> >>>> >>> >>>
> >> >>>> >>> >>
> >> >>>> >>> >>
> >> >>>> >>> >>
> >> >>>> >>> >> --
> >> >>>> >>> >> Piergiorgio Lucidi
> >> >>>> >>> >> Web: http://about.me/piergiorgiolucidi
> >> >>>> >>> >>
> >> >>>> >>> >
> >> >>>> >>>
> >> >>>> >>
> >> >>>> >>
> >> >>>> >>
> >> >>>> >> --
> >> >>>> >> Piergiorgio Lucidi
> >> >>>> >> Web: http://about.me/piergiorgiolucidi
> >> >>>> >>
> >> >>>> >>
> >> >>>> >
> >> >>>> >
> >> >>>> > --
> >> >>>> > Piergiorgio Lucidi
> >> >>>> > Web: http://about.me/piergiorgiolucidi
> >> >>>> >
> >> >>>>
> >> >>>
> >> >>>
> >> >>>
> >> >>> --
> >> >>> Piergiorgio Lucidi
> >> >>> Web: http://about.me/piergiorgiolucidi
> >> >>>
> >> >>>
> >> >>
> >> >>
> >> >> --
> >> >> Piergiorgio Lucidi
> >> >> Web: http://about.me/piergiorgiolucidi
> >> >>
> >> >
> >>
> >
> >
> >
> > --
> > Piergiorgio Lucidi
> > Web: http://about.me/piergiorgiolucidi
> >
>



-- 
Piergiorgio Lucidi
Web: http://about.me/piergiorgiolucidi

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message