/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/rwiki/trunk/rwiki-impl/impl/src/test/uk/ac/cam/caret/sakai/rwiki/component/service/impl/test/XSLTEntityHandlerTest.java $
* $Id: XSLTEntityHandlerTest.java 109558 2012-06-25 11:50:49Z matthew.buckett@oucs.ox.ac.uk $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
*
* Licensed under the Educational Community License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ecl1.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package uk.ac.cam.caret.sakai.rwiki.component.service.impl.test;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Date;
import java.util.HashMap;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import uk.ac.cam.caret.sakai.rwiki.component.model.impl.RWikiEntityImpl;
import uk.ac.cam.caret.sakai.rwiki.component.service.impl.Decoded;
import uk.ac.cam.caret.sakai.rwiki.component.service.impl.XSLTEntityHandler;
import uk.ac.cam.caret.sakai.rwiki.model.RWikiCurrentObjectImpl;
import uk.ac.cam.caret.sakai.rwiki.service.api.model.RWikiEntity;
/**
* @author ieb
*/
public class XSLTEntityHandlerTest extends TestCase
{
private static Log logger = LogFactory.getLog(XSLTEntityHandlerTest.class);
private XSLTEntityHandler eh = null;
private static final String testinputhtml = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/test/testpattern.xhtml";
private static final String testinputfop = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/test/testinput.xml";
public void setUp()
{
eh = new XSLTEntityHandler();
}
public void xtestDecode()
{
XSLTEntityHandler eh = new XSLTEntityHandler();
eh.setAccessURLStart("/wiki/");
eh.setMinorType("html");
String[] test = {
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home/sdfsdf/sdfsdf/sdfsdfsd/sdfsdfsdf/sdfsdfdsf/sdfsdf,123123.html",
"/wikisite/c8e34826-dab9-466c-80a9-e8e9bed50465/home/sdfsdf/sdfsdf/sdfsdfsd/sdfsdfsdf/sdfsdfdsf/sdfsdf,123123.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home,sdfsdf,223,234.html",
"/wikin/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home.html",
"/wikin/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/sdfsdfs/home,123123.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home,123123.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/home.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/sdfsdfs/home,123123.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/sdfsdfs/home.html",
"wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465/sdfsdfs/home.html",
"home.html",
"/wiki/sitec8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/home.html",
"/wiki/sitec8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs///home.html",
"/wiki///sitec8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/home.html",
"/wiki/global/HelpPage.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage.",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage..",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage..html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage",
"/wiki/site/site-uk.ac.cam.caret.sakai.rwiki.component.test.componentintegrationtest-71220.0/hometestpage.html",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage.09.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage.10.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage.20.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/HelpPage.atom",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/ .09.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/ .10.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/ .20.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/ .atom",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/subsite/ .09.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/subsite/ .10.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/subsite/ .20.rss",
"/wiki/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs/subsite/ .atom"
};
Decoded[] results_html = {
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465",
"/home/sdfsdf/sdfsdf/sdfsdfsd/sdfsdfsdf/sdfsdfdsf",
"sdfsdf", "123123"),
null,
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465", "/",
"home", "sdfsdf,223,234"),
null,
null,
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465",
"/sdfsdfs", "home", "123123"),
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465", "/",
"home", "123123"),
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465", "/",
"home", "-1"),
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465",
"/sdfsdfs", "home", "123123"),
new Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465",
"/sdfsdfs", "home", "-1"),
null,
null,
new Decoded("/sitec8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "home", "-1"),
null,
null,
new Decoded("/global", "/", "HelpPage", "-1"),
null,
null,
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage.", "-1"),
null,
new Decoded(
"/site/site-uk.ac.cam.caret.sakai.rwiki.component.test.componentintegrationtest-71220.0",
"/", "hometestpage", "-1"), null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //.09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","","-1"),
// //.atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //20.rss",
null // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1") //atom"
};
Decoded[] results_09rss = {
null, // 0
null, // 1
null, // 2
null, // 3
null, // 4
null, // 5
null, // 6
null, // 7
null, // 8
null, // 9
null, // 10
null, // 11
null, // 12
null, // 13
null, // 14
null, // 15
null, // 16
null, // 17
null, // 18
null, // 19
null, // 20
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage", "-1"), // .09.rss", //21
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //10.rss", //22
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //20.rss", //23
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //atom", //24
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", " ", "-1"), // 09.rss", //25
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //10.rss", //26
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //20.rss", //27
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //.atom", //28
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/subsite", " ", "-1"), // 09.rss", //29
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //10.rss", //30
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //20.rss", //31
null // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1") //atom" //32
};
Decoded[] results_ = {
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage", "-1"),
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage.", "-1"), null, null, null, null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //.09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //.atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //20.rss",
null // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1") //atom"
};
Decoded[] results_10rss = {
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //.09.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage", "-1"), // 10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //09.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", " ", "-1"), // 10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //.atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //09.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/subsite", " ", "-1"), // 10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //20.rss",
null // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1") //atom"
};
Decoded[] results_20rss = {
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //.09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //10.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage", "-1"), // 20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //10.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", " ", "-1"), // 20.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //.atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //10.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/subsite", " ", "-1"), // 20.rss",
null // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1") //atom"
};
Decoded[] results_atom = {
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //.09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","HelpPage","-1"),
// //20.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", "HelpPage", "-1"), // atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/","
// ","-1"), //20.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/", " ", "-1"), // .atom",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //09.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //10.rss",
null, // new
// Decoded("/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs","/subsite","
// ","-1"), //20.rss",
new Decoded(
"/site/c8e34826-dab9-466c-80a9-e8e9bed50465sdfsdfs",
"/subsite", " ", "-1") // atom"
};
Object[] testSet = { results_html, results_, results_09rss,
results_10rss, results_20rss, results_atom };
String[] postfix = { "html", "", "09.rss", "10.rss", "20.rss", "atom" };
assertEquals("Test sequence are not setup correctly ", testSet.length,
postfix.length);
for (int ts = 0; ts < testSet.length; ts++)
{
Decoded[] o = (Decoded[]) testSet[ts];
assertEquals("test and result are different lengths for entry "
+ ts, o.length, test.length);
}
assertEquals("Test sequence are not setup correctly ", testSet.length,
postfix.length);
for (int ts = 0; ts < testSet.length; ts++)
{
Decoded[] results = (Decoded[]) testSet[ts];
eh.setMinorType(postfix[ts]);
for (int j = 0; j < test.length; j++)
{
Decoded decoded = eh.decode(test[j]);
Decoded result = results[j];
if (decoded != null)
{
logger.info("--Context = " + decoded.getContext());
logger.info("--getContainer = " + decoded.getContainer());
logger.info("--getPage = " + decoded.getPage());
logger.info("--getVersion = " + decoded.getVersion());
logger.info("--getId = " + decoded.getId());
}
else
{
logger.info("--null");
}
if (result != null)
{
logger.info("++Context = " + result.getContext());
logger.info("++getContainer = " + result.getContainer());
logger.info("++getPage = " + result.getPage());
logger.info("++getVersion = " + result.getVersion());
logger.info("++getId = " + result.getId());
}
else
{
logger.info("++null");
}
if (result != null && decoded == null)
fail("Test Set " + ts + " minor " + postfix[ts] + " item "
+ j + " Should have matched " + test[j]);
if (result == null && decoded != null)
fail(" Should not have matched " + test[j]);
if (result != null && decoded != null)
{
assertEquals("Test " + ts + ":" + j
+ " Failed Contexts not the same " + test[j],
result.getContext(), decoded.getContext());
assertEquals("Test " + ts + ":" + j
+ " Failed Container not the same " + test[j],
result.getContainer(), decoded.getContainer());
assertEquals("Test " + ts + ":" + j
+ " Failed Page not the same " + test[j], result
.getPage(), decoded.getPage());
assertEquals("Test " + ts + ":" + j
+ " Failed Version not the same " + test[j], result
.getVersion(), decoded.getVersion());
assertEquals("Test " + ts + ":" + j
+ " Failed Id not the same " + test[j], result
.getId(), decoded.getId());
}
}
}
long start = System.currentTimeMillis();
int iters = 10000;
for (int i = 0; i < iters; i++)
{
eh.decode(test[i % test.length]);
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Decode call cost = " + tper + " ms");
}
public void xtestXSLT() throws Exception
{
String[] test = {
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/null.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/toatom03.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/tohtml.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/torss091.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/torss10.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/torss20.xslt",
"/uk/ac/cam/caret/sakai/rwiki/component/service/impl/xhtml2fo.xslt"
};
RWikiCurrentObjectImpl rwco = new RWikiCurrentObjectImpl();
RWikiEntity rwe = new RWikiEntityImpl(rwco);
rwco.setContent("Some Content");
rwco.setGroupAdmin(false);
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setOwner("The Owner");
rwco.setUser("The User");
rwco.setVersion(new Date());
rwco.setRevision(Integer.valueOf(5));
MockHttpServletRequest request = new MockHttpServletRequest();
for (int i = 0; i < test.length; i++)
{
MockHttpServletResponse response = new MockHttpServletResponse();
eh.setXslt(test[i]);
eh.init();
eh.outputContent(rwe, rwe, request, response);
logger.info(response.getContentAsString());
}
long start = System.currentTimeMillis();
int iters = 10;
for (int j = 0; j < iters; j++)
{
for (int i = 0; i < test.length; i++)
{
MockHttpServletResponse response = new MockHttpServletResponse();
eh.outputContent(rwe, rwe, request, response);
}
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Transform and Serialize Call Cost = " + tper + " ms");
}
public void xtestRTF() throws Exception
{
String transform = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/xhtml2fo.xslt";
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream(testinputhtml)));
String line = reader.readLine();
while (line != null)
{
sb.append(line).append("\n");
line = reader.readLine();
}
RWikiCurrentObjectImpl rwco = new RWikiCurrentObjectImpl();
RWikiEntity rwe = new RWikiEntityImpl(rwco);
rwco.setContent(sb.toString());
rwco.setGroupAdmin(false);
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setOwner("The Owner");
rwco.setUser("The User");
rwco.setVersion(new Date());
rwco.setRevision(Integer.valueOf(5));
MockHttpServletRequest request = new MockHttpServletRequest();
XSLTEntityHandler xeh = new XSLTEntityHandler();
xeh.setAccessURLStart("/wiki/");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setXslt(transform);
xeh.setMinorType("rtf");
xeh.setDefaultStackTrace("Failed To generate Stack Trace : {0}");
xeh
.setErrorFormat("Error encounvered performing transform : {0} \n {1}");
xeh.setAuthZPrefix("/wiki");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setStandardLinkFormat("/wiki{0}.html");
xeh.setHrefTagFormat("<a href=\"{0}\" >{1}</a>");
xeh.setAccessURLStart("/wiki/");
xeh
.setFeedFormat("<a href=\"{0}rtf\" target=\"feeds\"><img src=\"/library/image/sakai/rtf.gif\" border=\"0\" alt=\"RTF\" /></a>");
HashMap responseHeaders = new HashMap();
responseHeaders.put("content-type", "text/rtf");
xeh.setResponseHeaders(responseHeaders);
HashMap outputProperties = new HashMap();
outputProperties
.put("{http://xml.apache.org/xalan}content-handler",
"uk.ac.cam.caret.sakai.rwiki.component.service.impl.FOP2RTFSerializer");
xeh.setOutputProperties(outputProperties);
MockHttpServletResponse response = new MockHttpServletResponse();
xeh.init();
xeh.outputContent(rwe, rwe, request, response);
File f = new File("testoutput.rtf");
FileOutputStream fo = new FileOutputStream(f);
fo.write(response.getContentAsByteArray());
fo.close();
long start = System.currentTimeMillis();
int iters = 10;
for (int j = 0; j < iters; j++)
{
response = new MockHttpServletResponse();
xeh.outputContent(rwe, rwe, request, response);
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Transform and Serialize Call Cost = " + tper + " ms");
}
public void xtestPDF() throws Exception
{
String transform = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/xhtml2fo.xslt";
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream(testinputhtml)));
String line = reader.readLine();
while (line != null)
{
sb.append(line).append("\n");
line = reader.readLine();
}
RWikiCurrentObjectImpl rwco = new RWikiCurrentObjectImpl();
RWikiEntity rwe = new RWikiEntityImpl(rwco);
rwco.setContent(sb.toString());
rwco.setGroupAdmin(false);
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setOwner("The Owner");
rwco.setUser("The User");
rwco.setVersion(new Date());
rwco.setRevision(Integer.valueOf(5));
MockHttpServletRequest request = new MockHttpServletRequest();
XSLTEntityHandler xeh = new XSLTEntityHandler();
xeh.setAccessURLStart("/wiki/");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setXslt(transform);
xeh.setMinorType("pdf");
xeh.setDefaultStackTrace("Failed To generate Stack Trace : {0}");
xeh
.setErrorFormat("Error encounvered performing transform : {0} \n {1}");
xeh.setAuthZPrefix("/wiki");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setStandardLinkFormat("/wiki{0}.html");
xeh.setHrefTagFormat("<a href=\"{0}\" >{1}</a>");
xeh.setAccessURLStart("/wiki/");
xeh
.setFeedFormat("<a href=\"{0}pdf\" target=\"feeds\"><img src=\"/library/image/sakai/pdf.gif\" border=\"0\" alt=\"PDF\" /></a>");
HashMap responseHeaders = new HashMap();
responseHeaders.put("content-type", "application/pdf");
xeh.setResponseHeaders(responseHeaders);
HashMap outputProperties = new HashMap();
outputProperties
.put("{http://xml.apache.org/xalan}content-handler",
"uk.ac.cam.caret.sakai.rwiki.component.service.impl.FOP2PDFSerializer");
xeh.setOutputProperties(outputProperties);
MockHttpServletResponse response = new MockHttpServletResponse();
xeh.init();
xeh.outputContent(rwe, rwe, request, response);
File f = new File("testoutput.pdf");
FileOutputStream fo = new FileOutputStream(f);
fo.write(response.getContentAsByteArray());
fo.close();
long start = System.currentTimeMillis();
int iters = 10;
for (int j = 0; j < iters; j++)
{
response = new MockHttpServletResponse();
xeh.outputContent(rwe, rwe, request, response);
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Transform and Serialize Call Cost = " + tper + " ms");
}
public void xtestFOP() throws Exception
{
String transform = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/xhtml2fo.xslt";
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream(testinputhtml)));
String line = reader.readLine();
while (line != null)
{
sb.append(line).append("\n");
line = reader.readLine();
}
RWikiCurrentObjectImpl rwco = new RWikiCurrentObjectImpl();
RWikiEntity rwe = new RWikiEntityImpl(rwco);
rwco.setContent(sb.toString());
rwco.setGroupAdmin(false);
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setOwner("The Owner");
rwco.setUser("The User");
rwco.setVersion(new Date());
rwco.setRevision(Integer.valueOf(5));
MockHttpServletRequest request = new MockHttpServletRequest();
XSLTEntityHandler xeh = new XSLTEntityHandler();
xeh.setAccessURLStart("/wiki/");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setXslt(transform);
xeh.setMinorType("pdf");
xeh.setDefaultStackTrace("Failed To generate Stack Trace : {0}");
xeh
.setErrorFormat("Error encounvered performing transform : {0} \n {1}");
xeh.setAuthZPrefix("/wiki");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setStandardLinkFormat("/wiki{0}.html");
xeh.setHrefTagFormat("<a href=\"{0}\" >{1}</a>");
xeh.setAccessURLStart("/wiki/");
xeh
.setFeedFormat("<a href=\"{0}pdf\" target=\"feeds\"><img src=\"/library/image/sakai/pdf.gif\" border=\"0\" alt=\"PDF\" /></a>");
HashMap responseHeaders = new HashMap();
responseHeaders.put("content-type", "application/pdf");
xeh.setResponseHeaders(responseHeaders);
HashMap outputProperties = new HashMap();
// outputProperties.put("{http://xml.apache.org/xalan}content-handler","uk.ac.cam.caret.sakai.rwiki.component.service.impl.FOP2PDFSerializer");
xeh.setOutputProperties(outputProperties);
MockHttpServletResponse response = new MockHttpServletResponse();
xeh.init();
xeh.outputContent(rwe, rwe, request, response);
File f = new File("testoutputfop.xml");
FileOutputStream fo = new FileOutputStream(f);
fo.write(response.getContentAsByteArray());
fo.close();
long start = System.currentTimeMillis();
int iters = 10;
for (int j = 0; j < iters; j++)
{
response = new MockHttpServletResponse();
xeh.outputContent(rwe, rwe, request, response);
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Transform and Serialize Call Cost = " + tper + " ms");
}
public void xtestNULL() throws Exception
{
String transform = "/uk/ac/cam/caret/sakai/rwiki/component/service/impl/null.xslt";
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream(testinputhtml)));
String line = reader.readLine();
while (line != null)
{
sb.append(line).append("\n");
line = reader.readLine();
}
RWikiCurrentObjectImpl rwco = new RWikiCurrentObjectImpl();
RWikiEntity rwe = new RWikiEntityImpl(rwco);
rwco.setContent(sb.toString());
rwco.setGroupAdmin(false);
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setId("/site/sdf-sdf-sdf-sdf-sdf-sfd/SomePage/sdfgsfd/Home");
rwco.setOwner("The Owner");
rwco.setUser("The User");
rwco.setVersion(new Date());
rwco.setRevision(Integer.valueOf(5));
MockHttpServletRequest request = new MockHttpServletRequest();
XSLTEntityHandler xeh = new XSLTEntityHandler();
xeh.setAccessURLStart("/wiki/");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setXslt(transform);
xeh.setMinorType("pdf");
xeh.setDefaultStackTrace("Failed To generate Stack Trace : {0}");
xeh
.setErrorFormat("Error encounvered performing transform : {0} \n {1}");
xeh.setAuthZPrefix("/wiki");
xeh.setAnchorLinkFormat("/wiki{0}.html#{1}");
xeh.setStandardLinkFormat("/wiki{0}.html");
xeh.setHrefTagFormat("<a href=\"{0}\" >{1}</a>");
xeh.setAccessURLStart("/wiki/");
xeh
.setFeedFormat("<a href=\"{0}pdf\" target=\"feeds\"><img src=\"/library/image/sakai/pdf.gif\" border=\"0\" alt=\"PDF\" /></a>");
HashMap responseHeaders = new HashMap();
responseHeaders.put("content-type", "application/pdf");
xeh.setResponseHeaders(responseHeaders);
HashMap outputProperties = new HashMap();
// outputProperties.put("{http://xml.apache.org/xalan}content-handler","uk.ac.cam.caret.sakai.rwiki.component.service.impl.FOP2PDFSerializer");
xeh.setOutputProperties(outputProperties);
MockHttpServletResponse response = new MockHttpServletResponse();
xeh.init();
xeh.outputContent(rwe, rwe, request, response);
File f = new File("testoutput.xml");
FileOutputStream fo = new FileOutputStream(f);
fo.write(response.getContentAsByteArray());
fo.close();
long start = System.currentTimeMillis();
int iters = 10;
for (int j = 0; j < iters; j++)
{
response = new MockHttpServletResponse();
xeh.outputContent(rwe, rwe, request, response);
}
float timet = (float) 1.0 * (System.currentTimeMillis() - start);
float tper = (float) (timet / (1.0 * iters));
logger.info("Transform and Serialize Call Cost = " + tper + " ms");
}
public void testDummy() {
}
public void xtestFOPNULL() throws Exception
{
OutputStream out = null;
try
{
// Setup output stream. Note: Using BufferedOutputStream
// for performance reasons (helpful with FileOutputStreams).
out = new FileOutputStream("testfooutput.rtf");
out = new BufferedOutputStream(out);
// Construct fop with desired output format
FopFactory newInstance = FopFactory.newInstance();
Fop fop = newInstance.newFop(MimeConstants.MIME_RTF, out);
// Setup JAXP using identity transformer
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(); // identity
// transformer
// Setup input stream
Source src = new StreamSource(getClass().getResourceAsStream(
testinputfop));
// Resulting SAX events (the generated FO) must be piped through to
// FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
// Result processing
/*
* FormattingResults foResults = fop.getResults(); java.util.List
* pageSequences = foResults.getPageSequences(); for
* (java.util.Iterator it = pageSequences.iterator(); it.hasNext();) {
* PageSequenceResults pageSequenceResults =
* (PageSequenceResults)it.next(); System.out.println("PageSequence " +
* (String.valueOf(pageSequenceResults.getID()).length() > 0 ?
* pageSequenceResults.getID() : "<no id>") + " generated " +
* pageSequenceResults.getPageCount() + " pages."); }
* System.out.println("Generated " + foResults.getPageCount() + "
* pages in total.");
*/
}
finally
{
try {
out.close();
} catch ( Exception ex ) {
}
}
}
}