-Erik
--- Begin Message ---Maybe try something like this instead:
CommandLineExternalContext externalContext = new CommandLineExternalContext();
externalContext.getRequest().getAttributesMap().put("my-key", myValue);
myValue has to be either:
o a String containing an XML document o a W3C DOM Document o a dom4j Document o a PresentationServer SAXStore o a Bean that will be serialized to XML
and of course set the externalContext instance on the PipelineContext. Your current code won't work, because you are setting attributes on the PipelineContext, which the Scope generator won't read.
-Erik
Zahida Chaudri wrote:
> Hi Erik,
>
> Thanks for your reply.
>
> I've tried to use the scope generator as suggested, however this is
> not giving the results I would like.
>
> I've pasted my code below and would be grateful if you could check
> what I am doing wrong. It doesn't seem to be reading any input in
> from File1.xml.
>
> Thanks,
>
> Zahida.
>
> *** The Java Method is :
>
> public void start() {
> // 6. Initialize a PipelineContext
> PipelineContext pipelineContext = new PipelineContext();
>
> // z test parameters - start
> String paramKey = "testparam";
> String paramValue = "file://C://xml//main.xml";
> ExternalContext externalContext =
> (ExternalContext)
> pipelineContext.getAttribute(PipelineContext.EXTERNAL_CONTEXT);
>
> pipelineContext.setAttribute(paramKey, paramValue);
>
> try{
> String temp =
> (String) pipelineContext.getAttribute((Object) paramKey);
> System.out.println("temp: " + temp );
> }
> catch(ClassCastException e)
> {
> System.out.println("CalssCast: " + e.getMessage());
> e.printStackTrace();
> }
> // z test parameters - end
>
> // Some processors may require a JNDI context. In general,
> this is not required.
> Context jndiContext;
> try {
> jndiContext = new InitialContext();
> } catch (NamingException e) {
> throw new OXFException(e);
> }
> pipelineContext.setAttribute(PipelineContext.JNDI_CONTEXT, jndiContext);
>
> try {
> // 7. Run the pipeline from the processor definition
> created earlier. An ExternalContext
> // is supplied for those processors using external
> contexts, such as most serializers.
> PipelineEngineFactory.instance().executePipeline(processorDefinition,
> new CommandLineExternalContext(), pipelineContext);
> // PipelineEngineFactory.instance().executePipeline(processorDefinition,
> externalContext, pipelineContext);
>
> } catch (Exception e) {
> // 8. Display exceptions if needed
>
> System.out.println("Stupid exception thrown : " + e.getMessage());
> LocationData locationData =
> ValidationException.getRootLocationData(e);
> Throwable throwable = OXFException.getRootThrowable(e);
> String message = locationData == null
> ? "Exception with no location data"
> : "Exception at " + locationData.toString();
> logger.error(message, throwable);
> System.out.println("message: " + message);
> }
> }
>
>
> *** The Command Line Output from the Java App is :
>
> Starting Orbeon XML Server OXF_2_5_BUILD_353
> Initializing Resource Manager with:
> {oxf.resources.priority.2=org.orbeon.oxf.resources.ClassLoaderResourceManagerFactory,
> oxf.resources.factory=org.orbeon.oxf.resources.PriorityResourceManagerFactory,
> oxf.resources.priority.1=org.orbeon.oxf.resources.FilesystemResourceManagerFactory}
> fileURL: file:/C:/General
> downloads/jakarta-tomcat-5.0.29/webapps/orbeon/WEB-INF//resources//examples//zed//javatest.xpl
> filePath: ..//resources//examples//zed//javatest.xpl
> temp: file://C://xml//main.xml
> Running processor
> - Timing: 812 - Cache hits: 4, fault: 14, adds: 14, success rate: 22%
>
>
> *** The XPL file:
>
> <!--
> Test XPL which combines the XML from 2 files into one file under a
> root element
> -->
> <p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
> xmlns:oxf="http://www.orbeon.com/oxf/processors"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <p:param name="testparam" type="input"/>
>
> <!-- Transform an XML file -->
> <p:processor name="oxf:scope-generator"
> xmlns:p="http://www.orbeon.com/oxf/pipeline">
> <p:input name="config">
> <config>
> <key>#testparam</key>
> <scope>application</scope>
> </config>
> </p:input>
> <p:output name="data" id="filename"/>
> </p:processor>
>
>
> <p:processor name="oxf:file-serializer">
> <p:input name="config">
> <config>
> <file>Testresults.xml</file>
> <directory>C:\General
> downloads\jakarta-tomcat-5.0.29\webapps\orbeon\WEB-INF\resources\examples\zed</directory>
> </config>
> </p:input>
> <p:input name="data" href="aggregate('document', #filename,
> file2.xml)" />
> </p:processor>
> </p:config>
>
>
> *** The Resulting output in the file Testresults.xml is:
>
> <?xml version="1.0" encoding="utf-8" standalone="no"?>
> <document>
> <null xsi:nil="true"/>
> <journals>the journal of content loading</journals>
> </document>
>
>
> *** The Input files are:
>
> File1.xml
>
> <?xml version="1.0" encoding="iso-8859-1"?>
> <books>rubbish************************</books>
>
>
> File2.xml
>
> <journals>the journal of content loading</journals>
>
>
>
>
>
> On Tue, 11 Jan 2005 18:46:33 +0100, Erik Bruchez <[EMAIL PROTECTED]> wrote:
>
>>Zahida Chaudri wrote:
>>
>>
>>>I am new to Orbeon and investigating the use of pipelines for a
>>>project we have. Ideally we would like to run this from java using
>>>XML pipelines as we will be dealing with XML content.
>>
>>Good plan.
>>
>>
>>>1. How to run the pipeline from java. I've used OXF.java to work
>>>from and have it running now so that's OK
>>
>>Yes, please let us know if you encounter any problem.
>>
>>
>>>2. When adding a pipeline to run the email processor it is throwing an
>>>error saying the content-type attribute was not expected in the body
>>>element. Error unexpected attribute "content-type"(schema:
>>>http://www.orbeon.com/oxf/email).
>>>However when I run the following it works for only the HTML part.
>>><body mime-multipart="alternative">
>>> <part name="part1" content-type="text/plain">
>>> This is part 1
>>> </part>
>>> <part name="part2" content-type="text/html">
>>> <html>
>>> <body>
>>> <p>
>>> This is part 2
>>> </p>
>>> </body>
>>> </html>
>>> </part>
>>
>>Both parts should be sent. Did you look at the source of your email
>>and check that only the text/html part was created? BTW don't trust
>>your email client to debug, better look at the actual raw message.
>>
>>
>>>3. I will be dealing with a number of XML files and will need to
>>>create the pipeline dynamically, or perhaps pass the parameters into
>>>the pipeline. How do you pass parameters into a pipeline from java?
>>
>>One solution is to create an ExternalContext instance, store your
>>parameters in the request scope, and then use the Scope generator to
>>retrieve them. This is lacking documentation at the moment though.
>>
>>Another simple solution is to store your parameters into the
>>PipelineContext instance that you create before running the pipeline,
>>and then using either a simple custom processor or the Java processor,
>>extract this data and make it available as an XML document.
>>
>>
>>>4. Is it possible to validate against DTDs?
>>
>>Not from within XPL. You can validate at parsing time though when
>>using the URL generator, by specifying the
>><validating>true</validating> parameter. See:
>>
>> http://www.orbeon.com/ois/doc/processors-generators-url
>>
>>-Erik
--- End Message ---
