Hi,
I would assume that the problem is, that the replacement suffix is only
available in the included request and not in the including request.
Thus, the suffix.jsp script is not expected to see the new suffix.
Regards
Felix
janandith jayawardena schrieb:
Hi,
Thanks Felix. I wrote the test for replaceSelector :).
The problem now is with replace suffix.
can you suggest a way for this.
currently in my test file I have this,
Map<String,String> props = new HashMap<String,String>();
string resourceTypeX = "/x";
props.put("sling:resourceType", resourceTypeX);
string contentUrlX = testClient.createNode(HTTP_BASE_URL
+resourceTypeX , props);
string resourceTypeXQ = resourceTypeX + "/q";
props.clear();
props.put("sling:resourceType", resourceTypeXQ);
string contentUrlQ = testClient.createNode(HTTP_BASE_URL
+resourceTypeXQ, props);
uploadTestScript(resourceTypeXQ,"suffix.jsp","html.jsp");
public void testReplaceSuffix() throws Exception {
final String content = getContent(contentUrlQ + ".html/a.c",
CONTENT_TYPE_HTML);
System.out.println(content);
// assertTrue("result of flush",content.contains("Flush Successful
becasue commit is true"));
}
The "suffix.jsp" file contains the following,
<[EMAIL PROTECTED] session="false"%>
<[EMAIL PROTECTED] import="org.apache.sling.api.SlingHttpServletRequest"%>
<[EMAIL PROTECTED] import="org.apache.sling.api.resource.Resource"%>
<[EMAIL PROTECTED] prefix="sling"
uri="http://sling.apache.org/taglibs/sling/1.0"%>
<sling:defineObjects/>
<sling:include replaceSuffix="a.b" />
<%
SlingHttpServletRequest req = (SlingHttpServletRequest) request;
String suffixTest = "" ;
suffixTest = req.getRequestPathInfo().getSuffix() ;
if(suffixTest==null){
suffixTest = "Suffix Not Successful";
}
else{
suffixTest = "Suffix Successful";
}
%>
This test fails.
Also you can have a look at the current test at,
http://code.google.com/p/sling-scala/source/browse/trunk/sling475/?r=85
regards,
Janandith.
On Wed, Aug 6, 2008 at 3:34 AM, Felix Meschberger <[EMAIL PROTECTED]>wrote:
Hi Janandith,
janandith jayawardena schrieb:
Hi Felix,
I do not exactly understand what you are trying to achieve. Do you have
three scripts -- html.jsp, selector.jsp and replace.jsp ? And you >
request
http://host/something.html and have the html.jsp being called.
Now what is next ?
Thats what I want to do :).
Basically I want a way to write a test for SLING-475 which can test the
functionality of flush , replaceSelectors and replaceSuffix in
<sling:include /> tag. I'm still confused in finding a way to use these
options in sling:include tag.
Well, I would assume, that testing the flush would not be that easy ...
Testing the replaceSelectors would mean being able to tell that the correct
script has been included and for replaceSuffix you would check whether in
the included script the new suffix is visible.
So in html.jsp you would do:
<sling:include replaceSelectors="selector">
in selector.jsp you could do something like
Hello this is selector.jsp
In the response check you would then see whether selector.jsp is contained
in the response. If replaceSelectors would not work, the response would not
contain the checker string.
Similar tests could be done for the replaceSuffix.
Actually, you probably only need two scripts - html.jsp and selector.jsp.
Hope this helps.
Regards
Felix
Janandith.
On Mon, Aug 4, 2008 at 3:05 PM, Felix Meschberger <[EMAIL PROTECTED]
wrote:
Hi,
janandith jayawardena schrieb:
Hi,
Thanks Bertrand.
When I use ,
<sling:include addSelectors="selector" replaceSelectors="replace" />
I get the content of replace.jsp
Point is, that the addSelectors and replaceSelectors are also in fact
mutually exclusive in the sense that addSelectors is ignored if
replaceSelectors is set.
Hence the inclusion of replace.jsp is expected.
and
when I use ,
<sling:include addSelectors="selector"/>
<sling:include addSelectors="selector" replaceSelectors="replace" />
I get both selector.jsp and replace.jsp content.
Similar here: The first include includes the selector.jsp, while the
second
includes replace.jsp for the reasons explained above.
I tried this,
<sling:include addSelectors="selector"/>
<sling:include flush=true />
<sling:include addSelectors="selector" replaceSelectors="replace" />
hoping flush will erase initial selector.jsp content but there is no
content
and the program fails.
This is a dangerouse one because of the second line with the "flush"
attribute: The flush attribute says to write the current contents of the
output buffer out to the response (and not erase the buffer as you might
expect). In addition this tag will recursively include the same script
again, which should result in an exception being thrown.
I want to test with all these tags in one html.jsp file. how can I use
the
replaceSelector to replace selector.jsp with replace.jsp.
I do not exactly understand what you are trying to achieve. Do you have
three scripts -- html.jsp, selector.jsp and replace.jsp ? And you request
http://host/something.html and have the html.jsp being called.
Now what is next ?
Also why does the whole script fail when using flush. What is the
correct
way to use it.
Due to a recursive inclusion of itself and the exception bein thrown.
This
has nothing to do with the flush attribute but with the include itself,
which just includes the current resource with the same selectors and
extension and therefore resolves to the same script over and over again
until too many scripts are included and an exception is thrown.
Regards
Felix