Hi Jose,

I tried taking a quick look at this work today, but nothing has jumped 
out at me as "wrong" per say. Obviously, something is not working right 
as I also see a "Page Not Found" error when I try to run it.

However, that "Page Not Found" error looks like the RequestItem.java 
page cannot be loaded at all. When I attempt to run it, none of the 
log.info() statements you've added are executed.  To me, that implies 
there may be an underlying issue in the Sitemap. Somehow Cocoon is never 
making it to the RequestItem transformer, and therefore, it throws a 
"Page Not Found" error as it doesn't know what the paths "/request-item" 
nor "/request-item/main" actually refer to. I'm not sure why this is 
happening.

What I'd suggest is the following:
1) First, you might want to start with a more simplistic example.  In 
most scenarios, we actually recommend creating your *own* Aspect (as 
it's easier to manage your own code that way, plus you can avoid messing 
with highly complex sitemaps). So, you might want to start with a copy 
of the "XMLTest" Aspect, and create a brand new Aspect called "Michigan" 
or "RequestItem" or similar.

2) In that new Aspect, create a sitemap.xmap based on XMLTest's sitemap 
(as it is nice and simple). In that Sitemap, just add a single "match" like:
<map:match pattern="test-request-item">
      <map:transform type="TestRequestItem"/>
</map:match>

3) In your "TestRequestItem.java" class, just add in some dummy content. 
For example, a single 'div' with some "Hello World" text in the 
"addBody()" section.

4) Actually enable the custom aspect in xmlui.xconf & test it out. Make 
sure you can get to the /test-request-item path & that the dummy content 
gets loaded.

5) Once you have that working, slowly add in your current changes, 
little-by-little, testing it all along the way.  If I were you, I'd 
start by just trying to get the Form content to load first. Then, you 
can add in the extra "artifacts.js" magic to actually process the info 
entered into the form.

One other tip. It is possible to add logging statements into the 
"artifacts.js" file as well. This can be helpful in determining how it 
is processing things.  You'd add lines similar to:
cocoon.log.info("got here");
OR
cocoon.log.debug("got here");

Essentially, I think there has to be something wrong with the flow. I 
suspect there's a sitemap issue, but I'm not sure where it is. So, it's 
likely going to be easier to start simple and get something basic to 
work, and then slowly add your code back in little-by-little (until you 
find what is causing issues).

Sorry I don't have better news. I admit, Cocoon sitemaps & flowscript 
(*.js files) are not always the easiest to debug, which is why I usually 
take small development steps and test things heavily along the way.

- Tim

On 4/30/2012 1:08 PM, Blanco, Jose wrote:
> Tim,
>
> I removed the duplicate, but no change.  I have attached the files that I 
> have changed.  I looked at the way in which an eperson is delete/added was 
> done in the administrative area - the way the js file process it, and tried 
> duplicating that sort of logic .  My final goal is to create a page where the 
> user can request a copy of the bitstream ( this functionality exists in 
> jspui, but not in xmlui) by pressing the sendEmail button.
>
> What I'm seeing currently is that I get the PageNotFound error. I think this 
> is happening because the parameters are not correctly being passed through, 
> and item is resulting in a null which makes the code exit my new aspect 
> RequestItem.java.
>
> Here are the files I changed
> RequestItem.java is new. I started with the test aspects as a guide.
> artifacts.js is new. I started with the administrative.js as my guide.
> sitemap.xmap - added the patterns as I saw them being use in the 
> administrative area.  Look below for what I added:
>
> Added this:
>>                         <map:transformer name="RequestItem" 
>> src="org.dspace.app.xmlui.aspect.artifactbrowser.RequestItem"/>
>
> Added this:
>>
>>        <map:flow language="javascript">
>>                <map:script src="artifacts.js"/>
>>        </map:flow>
>>
>
> Added this:
>>
>>
>>                <map:match pattern="request-item">
>>                <map:match type="request" pattern="artifact-continue">
>>                 <map:call continuation="{1}"/>
>>                 </map:match>
>>                 <map:call function="startRequestItem"/>
>>                </map:match>
>>
> Added this:
>
>>                <!-- requested item -->
>>                <map:match pattern="request-item/main">
>>                              <map:transform type="RequestItem">
>>                                  <map:parameter name="handle" 
>> value="{flow-attribute:handle}"/>
>>                                  <map:parameter name="itemId" 
>> value="{flow-attribute:itemdId}"/>
>>                                  <map:parameter name="bitstreamId" 
>> value="{flow-attribute:bitstreamId}"/>
>>                              </map:transform>
>>
>>                </map:match>
>
> Thank you!
> Jose
> -----Original Message-----
> From: Tim Donohue [mailto:[email protected]]
> Sent: Monday, April 30, 2012 11:51 AM
> To: Blanco, Jose
> Cc: [email protected]
> Subject: Re: [Dspace-tech] sendPageAndWait not moving on.
>
> Hi Jose,
>
> It's actually rather difficult to determine what could be going on without 
> more context information (or more code).
>
> One oddity I notice is that in your below sitemap code you are 
> calling<map:transform type="RequestItem"/>  *twice*.  The first time with no 
> parameters, and then the second time with a set of parameters.
>
> It's possible that what you are seeing is that first call is happening and no 
> parameters are passed along.
>
> If this doesn't help you resolve the issues, it might be helpful if you can 
> provide us with some additional context, e.g.:
>
> 1. Can you describe what it is you are trying to do in DSpace XMLUI? Is it a 
> simple test or something more?
>
> 2. What code in XMLUI are you emulating? It could be helpful to understand 
> what you are basing your code on.
>
> 3. You may even want to send the full files (zipped) or post them somewhere 
> publicly (e.g. GitHub or public SVN). For example, it is difficult for us to 
> guess what you may be doing in your "RequestItem"
> transformer, etc.
>
> - Tim
>
> On 4/25/2012 10:58 AM, Blanco, Jose wrote:
>> I've made a couple of changes trying to emulate other files that work the 
>> way I want this to work, and I'm still stuck.
>>
>> Question, I have
>>
>> cocoon.sendPageAndWait("request-item/main",{"handle":handle,"itemId":i
>> temId,"bitstreamId":bitstreamId});
>>
>> and I have:
>>
>>                 <map:match pattern="request-item/main">
>>                    <map:transform type="RequestItem"/>
>>                               <map:transform type="RequestItem">
>>                                   <map:parameter name="handle" 
>> value="{flow-attribute:handle}"/>
>>                                   <map:parameter name="itemId" 
>> value="{flow-attribute:itemdId}"/>
>>                                   <map:parameter name="bitstreamId" 
>> value="{flow-attribute:bitstreamId}"/>
>>                               </map:transform>
>>
>>                 </map:match>
>>
>> But when I get to ehte RequestItem there is nothing in itemId.  I'm either 
>> not really passing it, or I have some setup error.  Any ideas?
>>
>> -Jose
>>
>> -----Original Message-----
>> From: Blanco, Jose [mailto:[email protected]]
>> Sent: Tuesday, April 24, 2012 2:02 PM
>> To: [email protected]
>> Subject: [Dspace-tech] sendPageAndWait not moving on.
>>
>> I'm stuck.  I created a page where the user enters some data, I then want to 
>> process the data based on button that is pressed.  To do this I have created 
>> a js file that contains this function:
>>
>> function startRequestItem()
>> {
>>     var handle = cocoon.request.get("handle");
>>     var itemId = cocoon.request.get("itemId");
>>     var bitstreamId = cocoon.request.get("bitstreamId");
>>     var result;
>>
>>    do
>>     {
>>
>>
>> sendPageAndWait("request-item/main",{"handle":handle,"itemId":itemId,"
>> bitstreamId":bitstreamId},result);
>>
>>       if (cocoon.request.get("submit_send_request_item"))
>>       {
>>         var item = Item.find(getDSContext(),itemId);
>>         
>> cocoon.redirectTo(cocoon.request.getContextPath()+"/handle/"+item.getHandle(),true);
>>         getDSContext().complete();
>>         item = null;
>>         cocoon.exit();
>>       }
>>       if (cocoon.request.get("submit_cancel_request_item"))
>>       {
>>         var item = Item.find(getDSContext(),itemId);
>>         
>> cocoon.redirectTo(cocoon.request.getContextPath()+"/handle/"+item.getHandle(),true);
>>         getDSContext().complete();
>>         item = null;
>>         cocoon.exit();
>>       }
>>     }
>>     while (true);
>>
>> }
>>
>> But what I'm seeing is that the request-item/main is processed but when a 
>> button is hit you don't return from the sendPageAndWait function.  The same 
>> page is just refreshed.
>>
>> Here is what I have in the sitemap:
>>
>>                 <map:match pattern="request-item">
>>              <map:match type="request" pattern="artifact-continue">
>>              <map:call continuation="{1}"/>
>>      </map:match>
>>      <map:call function="startRequestItem"/>
>>                 </map:match>
>>
>>
>> AND
>>
>>
>>                 <!-- requested item -->
>>                 <map:match pattern="request-item/main">
>>                    <map:transform type="RequestItem"/>
>>                      <map:serialize type="xml"/>
>>                 </map:match>
>>
>>
>> I hope this is enough info to get some suggestions.
>>
>> Thank you!  Jose
>>
>>
>>
>> ----------------------------------------------------------------------
>> --------
>> Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond.
>> Discussions will include endpoint security, mobile security and the
>> latest in malware threats.
>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> _______________________________________________
>> DSpace-tech mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/dspace-tech
>>
>> ----------------------------------------------------------------------
>> --------
>> Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond.
>> Discussions will include endpoint security, mobile security and the
>> latest in malware threats.
>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> _______________________________________________
>> DSpace-tech mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/dspace-tech
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and threat 
> landscape has changed and how IT managers can respond. Discussions will 
> include endpoint security, mobile security and the latest in malware threats. 
> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> DSpace-tech mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/dspace-tech

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
DSpace-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-tech

Reply via email to