Thanks Claus. Probably I missed committing that bit, but cannot test at the moment though. Sorry for all the noise
Bilgin On 6 March 2012 10:13, Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > Okay it seems like it was a missing osgi <properties> in the pom.xml > file. I will get this committed when my building completes now. > > > On Tue, Mar 6, 2012 at 9:07 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > > Hi > > > > With the latest source from trunk. I get this build error when doing a > > full build > > mvn clean install -Dtest=false > > > > [ERROR] Failed to execute goal > > org.apache.felix:maven-bundle-plugin:2.3.4:bundle (default-bundle) on > > project camel-fop: Internal error in maven-bundle-plugin: Illegal > > repetition near index 0 > > [ERROR] ${camel\.osgi\.export\.pkg} > > [ERROR] ^ > > [ERROR] -> [Help 1] > > > > Do others get this problem as well? > > > > > > On Tue, Mar 6, 2012 at 2:10 AM, <bibr...@apache.org> wrote: > >> Author: bibryam > >> Date: Tue Mar 6 01:10:05 2012 > >> New Revision: 1297313 > >> > >> URL: http://svn.apache.org/viewvc?rev=1297313&view=rev > >> Log: > >> CAMEL-3551: Added new camel-fop component. > >> > >> Added: > >> camel/trunk/components/camel-fop/ > >> camel/trunk/components/camel-fop/pom.xml > >> camel/trunk/components/camel-fop/src/ > >> camel/trunk/components/camel-fop/src/main/ > >> camel/trunk/components/camel-fop/src/main/java/ > >> camel/trunk/components/camel-fop/src/main/java/org/ > >> camel/trunk/components/camel-fop/src/main/java/org/apache/ > >> camel/trunk/components/camel-fop/src/main/java/org/apache/camel/ > >> > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/ > >> > > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/ > >> > > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java > >> > > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopConstants.java > >> > > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopEndpoint.java > >> > > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopProducer.java > >> camel/trunk/components/camel-fop/src/main/resources/ > >> camel/trunk/components/camel-fop/src/main/resources/META-INF/ > >> > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/ > >> > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/ > >> > > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/ > >> > > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/ > >> > > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/ > >> > > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop > >> camel/trunk/components/camel-fop/src/test/ > >> camel/trunk/components/camel-fop/src/test/data/ > >> camel/trunk/components/camel-fop/src/test/data/conf/ > >> camel/trunk/components/camel-fop/src/test/data/conf/testcfg.xml > >> camel/trunk/components/camel-fop/src/test/data/xml/ > >> camel/trunk/components/camel-fop/src/test/data/xml/data.xml > >> camel/trunk/components/camel-fop/src/test/java/ > >> camel/trunk/components/camel-fop/src/test/java/org/ > >> camel/trunk/components/camel-fop/src/test/java/org/apache/ > >> camel/trunk/components/camel-fop/src/test/java/org/apache/camel/ > >> > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/ > >> > > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/ > >> > > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java > >> > > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java > >> > > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java > >> camel/trunk/components/camel-fop/src/test/resources/ > >> camel/trunk/components/camel-fop/src/test/resources/xslt/ > >> camel/trunk/components/camel-fop/src/test/resources/xslt/template.xsl > >> Modified: > >> camel/trunk/apache-camel/src/main/descriptors/common-bin.xml > >> camel/trunk/components/pom.xml > >> camel/trunk/parent/pom.xml > >> camel/trunk/platforms/karaf/features/pom.xml > >> > camel/trunk/platforms/karaf/features/src/main/resources/bundles.properties > >> camel/trunk/platforms/karaf/features/src/main/resources/features.xml > >> > >> Modified: camel/trunk/apache-camel/src/main/descriptors/common-bin.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/apache-camel/src/main/descriptors/common-bin.xml?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- camel/trunk/apache-camel/src/main/descriptors/common-bin.xml > (original) > >> +++ camel/trunk/apache-camel/src/main/descriptors/common-bin.xml Tue > Mar 6 01:10:05 2012 > >> @@ -62,6 +62,7 @@ > >> <include>org.apache.camel:camel-eventadmin</include> > >> <include>org.apache.camel:camel-exec</include> > >> <include>org.apache.camel:camel-flatpack</include> > >> + <include>org.apache.camel:camel-fop</include> > >> <include>org.apache.camel:camel-freemarker</include> > >> <include>org.apache.camel:camel-ftp</include> > >> <include>org.apache.camel:camel-gae</include> > >> > >> Added: camel/trunk/components/camel-fop/pom.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/pom.xml?rev=1297313&view=auto > >> > ============================================================================== > >> --- camel/trunk/components/camel-fop/pom.xml (added) > >> +++ camel/trunk/components/camel-fop/pom.xml Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,75 @@ > >> +<?xml version="1.0" encoding="UTF-8"?> > >> +<!-- > >> + Licensed to the Apache Software Foundation (ASF) under one or more > >> + contributor license agreements. See the NOTICE file distributed with > >> + this work for additional information regarding copyright ownership. > >> + The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + > >> + 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. > >> +--> > >> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" > http://www.w3.org/2001/XMLSchema-instance" > >> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/maven-v4_0_0.xsd"> > >> + > >> + <modelVersion>4.0.0</modelVersion> > >> + > >> + <parent> > >> + <groupId>org.apache.camel</groupId> > >> + <artifactId>camel-parent</artifactId> > >> + <version>2.10-SNAPSHOT</version> > >> + <relativePath>../../parent</relativePath> > >> + </parent> > >> + > >> + <artifactId>camel-fop</artifactId> > >> + <packaging>bundle</packaging> > >> + <name>Camel :: FOP</name> > >> + <description>Camel FOP support</description> > >> + > >> + <dependencies> > >> + <dependency> > >> + <groupId>org.apache.camel</groupId> > >> + <artifactId>camel-core</artifactId> > >> + </dependency> > >> + <dependency> > >> + <groupId>org.apache.xmlgraphics</groupId> > >> + <artifactId>fop</artifactId> > >> + <version>${fop-version}</version> > >> + </dependency> > >> + > >> + <!-- for testing --> > >> + <dependency> > >> + <groupId>org.apache.camel</groupId> > >> + <artifactId>camel-test</artifactId> > >> + <scope>test</scope> > >> + </dependency> > >> + <dependency> > >> + <groupId>org.apache.pdfbox</groupId> > >> + <artifactId>pdfbox</artifactId> > >> + <version>1.6.0</version> > >> + <scope>test</scope> > >> + </dependency> > >> + > >> + <!-- logging --> > >> + <dependency> > >> + <groupId>org.slf4j</groupId> > >> + <artifactId>slf4j-api</artifactId> > >> + </dependency> > >> + <dependency> > >> + <groupId>org.slf4j</groupId> > >> + <artifactId>slf4j-log4j12</artifactId> > >> + <scope>test</scope> > >> + </dependency> > >> + <dependency> > >> + <groupId>log4j</groupId> > >> + <artifactId>log4j</artifactId> > >> + <scope>test</scope> > >> + </dependency> > >> + </dependencies> > >> +</project> > >> > >> Added: > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,35 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.util.Map; > >> + > >> +import org.apache.camel.Endpoint; > >> +import org.apache.camel.impl.DefaultComponent; > >> + > >> +/** > >> + * Represents the component that manages {@link FopEndpoint}. > >> + */ > >> +public class FopComponent extends DefaultComponent { > >> + > >> + protected Endpoint createEndpoint(String uri, String remaining, > Map<String, Object> parameters) > >> + throws Exception { > >> + FopEndpoint endpoint = new FopEndpoint(uri, this, remaining); > >> + setProperties(endpoint, parameters); > >> + return endpoint; > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopConstants.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopConstants.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopConstants.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopConstants.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,23 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +public interface FopConstants { > >> + String CAMEL_FOP_RENDER = "CamelFop.Render."; > >> + String CAMEL_FOP_ENCRYPT = "CamelFop.Encrypt."; > >> + String CAMEL_FOP_OUTPUT_FORMAT = "CamelFop.Output.Format"; > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopEndpoint.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopEndpoint.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopEndpoint.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopEndpoint.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,86 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.io.IOException; > >> + > >> +import org.xml.sax.SAXException; > >> + > >> +import org.apache.avalon.framework.configuration.Configuration; > >> +import > org.apache.avalon.framework.configuration.ConfigurationException; > >> +import > org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; > >> +import org.apache.camel.Consumer; > >> +import org.apache.camel.Processor; > >> +import org.apache.camel.Producer; > >> +import org.apache.camel.impl.DefaultEndpoint; > >> +import org.apache.fop.apps.FOPException; > >> +import org.apache.fop.apps.FopFactory; > >> + > >> +/** > >> + * Represents a Fop endpoint. > >> + */ > >> +public class FopEndpoint extends DefaultEndpoint { > >> + private String userConfigURL; > >> + private FopFactory fopFactory; > >> + private String remaining; > >> + > >> + public FopEndpoint(String uri, FopComponent component, String > remaining) { > >> + super(uri, component); > >> + this.remaining = remaining; > >> + this.fopFactory = FopFactory.newInstance(); > >> + } > >> + > >> + public Producer createProducer() throws Exception { > >> + return new FopProducer(this, fopFactory, remaining); > >> + } > >> + > >> + public Consumer createConsumer(Processor processor) throws > Exception { > >> + throw new UnsupportedOperationException("Consumer not > supported for FOP endpoint"); > >> + } > >> + > >> + public boolean isSingleton() { > >> + return true; > >> + } > >> + > >> + FopFactory getFopFactory() { > >> + return fopFactory; > >> + } > >> + > >> + public void setUserConfigURL(String userConfigURL) { > >> + this.userConfigURL = userConfigURL; > >> + updateConfigurations(); > >> + } > >> + > >> + private void updateConfigurations() { > >> + DefaultConfigurationBuilder cfgBuilder = new > DefaultConfigurationBuilder(); > >> + Configuration cfg; > >> + try { > >> + cfg = cfgBuilder.buildFromFile(this.userConfigURL); > >> + } catch (SAXException e) { > >> + throw new RuntimeException(e); > >> + } catch (IOException e) { > >> + throw new RuntimeException(e); > >> + } catch (ConfigurationException e) { > >> + throw new RuntimeException(e); > >> + } > >> + try { > >> + fopFactory.setUserConfig(cfg); > >> + } catch (FOPException e) { > >> + throw new RuntimeException(e); > >> + } > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopProducer.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopProducer.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopProducer.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopProducer.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,106 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.io.ByteArrayOutputStream; > >> +import java.io.OutputStream; > >> +import java.util.Map; > >> +import javax.xml.transform.Result; > >> +import javax.xml.transform.Source; > >> +import javax.xml.transform.Transformer; > >> +import javax.xml.transform.TransformerException; > >> +import javax.xml.transform.TransformerFactory; > >> +import javax.xml.transform.sax.SAXResult; > >> +import javax.xml.transform.stream.StreamSource; > >> + > >> +import org.apache.camel.Exchange; > >> +import org.apache.camel.RuntimeExchangeException; > >> +import org.apache.camel.impl.DefaultProducer; > >> +import org.apache.camel.util.IntrospectionSupport; > >> +import org.apache.fop.apps.FOPException; > >> +import org.apache.fop.apps.FOUserAgent; > >> +import org.apache.fop.apps.Fop; > >> +import org.apache.fop.apps.FopFactory; > >> +import org.apache.fop.pdf.PDFEncryptionParams; > >> + > >> +/** > >> + * The Fop producer. > >> + */ > >> +public class FopProducer extends DefaultProducer { > >> + private final FopFactory fopFactory; > >> + private final String remaining; > >> + > >> + public FopProducer(FopEndpoint endpoint, FopFactory fopFactory, > String remaining) { > >> + super(endpoint); > >> + this.fopFactory = fopFactory; > >> + this.remaining = remaining; > >> + } > >> + > >> + public void process(Exchange exchange) throws Exception { > >> + FOUserAgent userAgent = fopFactory.newFOUserAgent(); > >> + Map<String, Object> headers = exchange.getIn().getHeaders(); > >> + setRenderParameters(userAgent, headers); > >> + setEncryptionParameters(userAgent, headers); > >> + > >> + String outputFormat = getOutputFormat(exchange); > >> + Source src = exchange.getIn().getBody(StreamSource.class); > >> + > >> + OutputStream out = transform(userAgent, outputFormat, src); > >> + exchange.getOut().setBody(out); > >> + } > >> + > >> + private String getOutputFormat(Exchange exchange) { > >> + String outputFormat = exchange.getIn() > >> + .getHeader(FopConstants.CAMEL_FOP_OUTPUT_FORMAT, > this.remaining, String.class); > >> + if (outputFormat == null) { > >> + throw new RuntimeExchangeException("Missing output > format", exchange); > >> + } > >> + > >> + return outputFormat; > >> + } > >> + > >> + private OutputStream transform(FOUserAgent userAgent, String > outputFormat, Source src) > >> + throws FOPException, TransformerException { > >> + OutputStream out = new ByteArrayOutputStream(); > >> + Fop fop = fopFactory.newFop(outputFormat, userAgent, out); > >> + TransformerFactory factory = TransformerFactory.newInstance(); > >> + Transformer transformer = factory.newTransformer(); > >> + > >> + Result res = new SAXResult(fop.getDefaultHandler()); > >> + transformer.transform(src, res); > >> + return out; > >> + } > >> + > >> + private void setEncryptionParameters(FOUserAgent userAgent, > Map<String, Object> headers) > >> + throws Exception { > >> + Map<String, Object> encryptionParameters = IntrospectionSupport > >> + .extractProperties(headers, > FopConstants.CAMEL_FOP_ENCRYPT); > >> + if (!encryptionParameters.isEmpty()) { > >> + PDFEncryptionParams encryptionParams = new > PDFEncryptionParams(); > >> + IntrospectionSupport.setProperties(encryptionParams, > encryptionParameters); > >> + userAgent.getRendererOptions().put("encryption-params", > encryptionParams); > >> + } > >> + } > >> + > >> + private void setRenderParameters(FOUserAgent userAgent, > Map<String, Object> headers) throws Exception { > >> + Map<String, Object> parameters = IntrospectionSupport > >> + .extractProperties(headers, > FopConstants.CAMEL_FOP_RENDER); > >> + if (!parameters.isEmpty()) { > >> + IntrospectionSupport.setProperties(userAgent, parameters); > >> + } > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop > (added) > >> +++ > camel/trunk/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,18 @@ > >> +# > >> +# Licensed to the Apache Software Foundation (ASF) under one or more > >> +# contributor license agreements. See the NOTICE file distributed with > >> +# this work for additional information regarding copyright ownership. > >> +# The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> +# > >> +# 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. > >> +# > >> + > >> +class=org.apache.camel.component.fop.FopComponent > >> > >> Added: camel/trunk/components/camel-fop/src/test/data/conf/testcfg.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/data/conf/testcfg.xml?rev=1297313&view=auto > >> > ============================================================================== > >> --- camel/trunk/components/camel-fop/src/test/data/conf/testcfg.xml > (added) > >> +++ camel/trunk/components/camel-fop/src/test/data/conf/testcfg.xml Tue > Mar 6 01:10:05 2012 > >> @@ -0,0 +1,42 @@ > >> +<?xml version="1.0" encoding="UTF-8"?> > >> +<!-- > >> + Licensed to the Apache Software Foundation (ASF) under one or more > >> + contributor license agreements. See the NOTICE file distributed with > >> + this work for additional information regarding copyright ownership. > >> + The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + > >> + 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. > >> +--> > >> +<fop version="1.0"> > >> + > >> + <!-- Strict user configuration --> > >> + <strict-configuration>true</strict-configuration> > >> + > >> + <!-- Strict FO validation --> > >> + <strict-validation>true</strict-validation> > >> + > >> + <!-- Base URL for resolving relative URLs --> > >> + <base>./</base> > >> + > >> + <!-- Font Base URL for resolving relative font URLs --> > >> + <font-base>./</font-base> > >> + > >> + <!-- Source resolution in dpi (dots/pixels per inch) for determining > the size of pixels in SVG and bitmap images, default: 72dpi --> > >> + <source-resolution>96</source-resolution> > >> + <!-- Target resolution in dpi (dots/pixels per inch) for specifying > the target resolution for generated bitmaps, default: 72dpi --> > >> + <target-resolution>72</target-resolution> > >> + > >> + <!-- default page-height and page-width, in case > >> + value is specified as auto --> > >> + <default-page-settings height="11in" width="8.26in"/> > >> + > >> + <!-- etc. etc..... --> > >> +</fop> > >> > >> Added: camel/trunk/components/camel-fop/src/test/data/xml/data.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/data/xml/data.xml?rev=1297313&view=auto > >> > ============================================================================== > >> --- camel/trunk/components/camel-fop/src/test/data/xml/data.xml (added) > >> +++ camel/trunk/components/camel-fop/src/test/data/xml/data.xml Tue Mar > 6 01:10:05 2012 > >> @@ -0,0 +1,45 @@ > >> +<?xml version="1.0" encoding="UTF-8"?> > >> +<!-- > >> + Licensed to the Apache Software Foundation (ASF) under one or more > >> + contributor license agreements. See the NOTICE file distributed with > >> + this work for additional information regarding copyright ownership. > >> + The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + > >> + 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. > >> +--> > >> +<projectteam> > >> + <projectname>The Killer Application</projectname> > >> + <member> > >> + <name>John Doe</name> > >> + <function>lead</function> > >> + <email>jon....@killerapp.fun</email> > >> + </member> > >> + <member> > >> + <name>Paul Coder</name> > >> + <function>dev</function> > >> + <email>paul.co...@killerapp.fun</email> > >> + </member> > >> + <member> > >> + <name>Max Hacker</name> > >> + <function>dev</function> > >> + <email>max.hac...@killerapp.fun</email> > >> + </member> > >> + <member> > >> + <name>Donna Book</name> > >> + <function>doc</function> > >> + <email>donna.b...@killerapp.fun</email> > >> + </member> > >> + <member> > >> + <name>Henry Tester</name> > >> + <function>qa</function> > >> + <email>henry.tes...@killerapp.fun</email> > >> + </member> > >> +</projectteam> > >> > >> Added: > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,67 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.io.FileInputStream; > >> + > >> +import org.apache.camel.EndpointInject; > >> +import org.apache.camel.Exchange; > >> +import org.apache.camel.Produce; > >> +import org.apache.camel.ProducerTemplate; > >> +import org.apache.camel.builder.RouteBuilder; > >> +import org.apache.camel.component.mock.MockEndpoint; > >> +import org.apache.camel.test.junit4.CamelTestSupport; > >> +import org.apache.pdfbox.pdmodel.PDDocument; > >> +import org.junit.Test; > >> + > >> +public class FopComponentTest extends CamelTestSupport { > >> + > >> + @EndpointInject(uri = "mock:result") > >> + protected MockEndpoint resultEndpoint; > >> + > >> + @Produce(uri = "direct:start") > >> + protected ProducerTemplate template; > >> + > >> + @Test > >> + public void createPdfUsingXmlDataAndXsltTransformation() throws > Exception { > >> + resultEndpoint.expectedMessageCount(1); > >> + FileInputStream inputStream = new > FileInputStream("src/test/data/xml/data.xml"); > >> + > >> + template.sendBody(inputStream); > >> + resultEndpoint.assertIsSatisfied(); > >> + > >> + PDDocument document = > PDDocument.load("target/data/result.pdf"); > >> + String pdfText = FopHelper.extractTextFrom(document); > >> + assertTrue(pdfText.contains("Project")); //from xsl template > >> + assertTrue(pdfText.contains("John Doe")); //from data xml > >> + } > >> + > >> + @Override > >> + protected RouteBuilder createRouteBuilder() { > >> + return new RouteBuilder() { > >> + public void configure() { > >> + from("direct:start") > >> + .to("xslt:xslt/template.xsl") > >> + .to("fop:application/pdf") > >> + .setHeader(Exchange.FILE_NAME, > constant("result.pdf")) > >> + .to("file:target/data") > >> + .to("mock:result"); > >> + > >> + } > >> + }; > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,101 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.io.IOException; > >> +import java.io.InputStream; > >> + > >> +import org.apache.camel.Endpoint; > >> +import org.apache.camel.Exchange; > >> +import org.apache.camel.Producer; > >> +import org.apache.camel.impl.DefaultExchange; > >> +import org.apache.camel.test.junit4.CamelTestSupport; > >> +import org.apache.fop.apps.MimeConstants; > >> +import org.apache.pdfbox.cos.COSName; > >> +import org.apache.pdfbox.pdmodel.PDDocument; > >> +import org.junit.Test; > >> + > >> +public class FopEndpointTest extends CamelTestSupport { > >> + > >> + @Test > >> + public void generatePdfFromXslfoWithSpecificText() throws > Exception { > >> + Endpoint endpoint = > context().getEndpoint("fop:application/pdf"); > >> + Producer producer = endpoint.createProducer(); > >> + Exchange exchange = new DefaultExchange(context); > >> + exchange.getIn().setBody(FopHelper.decorateTextWithXSLFO("Test > Content")); > >> + > >> + producer.process(exchange); > >> + PDDocument document = getDocumentFrom(exchange); > >> + String content = FopHelper.extractTextFrom(document); > >> + assertEquals("Test Content", content); > >> + } > >> + > >> + @Test > >> + public void specifyCustomUserConfigurationFile() throws Exception { > >> + FopEndpoint customConfiguredEndpoint = context() > >> + > > .getEndpoint("fop:application/pdf?userConfigURL=src/test/data/conf/testcfg.xml", > >> + FopEndpoint.class); > >> + float customSourceResolution = > customConfiguredEndpoint.getFopFactory().getSourceResolution(); > >> + assertEquals(96.0, customSourceResolution, 0.1); > >> + } > >> + > >> + @Test > >> + public void setPDFRenderingMetadataPerDocument() throws Exception { > >> + Endpoint endpoint = > context().getEndpoint("fop:application/pdf"); > >> + Producer producer = endpoint.createProducer(); > >> + Exchange exchange = new DefaultExchange(context); > >> + exchange.getIn().setHeader("CamelFop.Render.Creator", "Test > User"); > >> + exchange.getIn().setBody(FopHelper.decorateTextWithXSLFO("Test > Content")); > >> + > >> + producer.process(exchange); > >> + PDDocument document = getDocumentFrom(exchange); > >> + String creator = FopHelper.getDocumentMetadataValue(document, > COSName.CREATOR); > >> + assertEquals("Test User", creator); > >> + } > >> + > >> + @Test > >> + public void encryptPdfWithUserPassword() throws Exception { > >> + Endpoint endpoint = > context().getEndpoint("fop:application/pdf"); > >> + Producer producer = endpoint.createProducer(); > >> + Exchange exchange = new DefaultExchange(context); > >> + exchange.getIn().setHeader("CamelFop.Encrypt.userPassword", > "secret"); > >> + exchange.getIn().setBody(FopHelper.decorateTextWithXSLFO("Test > Content")); > >> + > >> + producer.process(exchange); > >> + PDDocument document = getDocumentFrom(exchange); > >> + assertTrue(document.isEncrypted()); > >> + } > >> + > >> + @Test > >> + public void overridePdfOutputFormatToPlainText() throws Exception { > >> + String defaultOutputFormat = "application/pdf"; > >> + Endpoint endpoint = context().getEndpoint("fop:" + > defaultOutputFormat); > >> + Producer producer = endpoint.createProducer(); > >> + Exchange exchange = new DefaultExchange(context); > >> + > exchange.getIn().setHeader(FopConstants.CAMEL_FOP_OUTPUT_FORMAT, > MimeConstants.MIME_PLAIN_TEXT); > >> + exchange.getIn().setBody(FopHelper.decorateTextWithXSLFO("Test > Content")); > >> + > >> + producer.process(exchange); > >> + String plainText = > exchange.getOut().getBody(String.class).trim(); > >> + assertEquals("Test Content", plainText); > >> + } > >> + > >> + private PDDocument getDocumentFrom(Exchange exchange) throws > IOException { > >> + InputStream inputStream = > exchange.getOut().getBody(InputStream.class); > >> + return PDDocument.load(inputStream); > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java > (added) > >> +++ > camel/trunk/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java > Tue Mar 6 01:10:05 2012 > >> @@ -0,0 +1,75 @@ > >> +/** > >> + * Licensed to the Apache Software Foundation (ASF) under one or more > >> + * contributor license agreements. See the NOTICE file distributed > with > >> + * this work for additional information regarding copyright ownership. > >> + * The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + * > >> + * 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 org.apache.camel.component.fop; > >> + > >> +import java.io.IOException; > >> +import java.io.StringWriter; > >> +import java.io.Writer; > >> + > >> +import org.apache.pdfbox.cos.COSName; > >> +import org.apache.pdfbox.exceptions.CryptographyException; > >> +import org.apache.pdfbox.pdmodel.PDDocument; > >> +import org.apache.pdfbox.pdmodel.PDDocumentInformation; > >> +import > org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException; > >> +import org.apache.pdfbox.pdmodel.encryption.DecryptionMaterial; > >> +import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial; > >> +import org.apache.pdfbox.util.PDFTextStripper; > >> + > >> +public final class FopHelper { > >> + private FopHelper() { > >> + } > >> + > >> + //decryption requires additional libraries > >> + public static void decryptPDFN(PDDocument document, String > password) throws > >> + IOException, CryptographyException, > BadSecurityHandlerException { > >> + if (document.isEncrypted()) { > >> + DecryptionMaterial decryptionMaterial = new > StandardDecryptionMaterial(password); > >> + document.openProtection(decryptionMaterial); > >> + } else { > >> + throw new RuntimeException("Document not encrypted"); > >> + } > >> + } > >> + > >> + public static String extractTextFrom(PDDocument document) throws > IOException { > >> + Writer output = new StringWriter(); > >> + PDFTextStripper stripper = new PDFTextStripper(); > >> + stripper.writeText(document, output); > >> + return output.toString().trim(); > >> + } > >> + > >> + public static String getDocumentMetadataValue(PDDocument document, > COSName name) { > >> + PDDocumentInformation info = document.getDocumentInformation(); > >> + return info.getDictionary().getString(name); > >> + } > >> + > >> + public static String decorateTextWithXSLFO(String text) { > >> + return "<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\ > ">\n" > >> + + " <fo:layout-master-set>\n" > >> + + " <fo:simple-page-master master-name=\"only\">\n" > >> + + " <fo:region-body > region-name=\"xsl-region-body\" margin=\"0.7in\" padding=\"0\" />\n" > >> + + " <fo:region-before > region-name=\"xsl-region-before\" extent=\"0.7in\" />\n" > >> + + " <fo:region-after > region-name=\"xsl-region-after\" extent=\"0.7in\" />\n" > >> + + " </fo:simple-page-master>\n" > >> + + " </fo:layout-master-set>\n" > >> + + " <fo:page-sequence master-reference=\"only\">\n" > >> + + " <fo:flow flow-name=\"xsl-region-body\">\n" > >> + + " <fo:block>" + text + "</fo:block>\n" > >> + + " </fo:flow>\n" > >> + + " </fo:page-sequence>\n" > >> + + "</fo:root>"; > >> + } > >> +} > >> > >> Added: > camel/trunk/components/camel-fop/src/test/resources/xslt/template.xsl > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-fop/src/test/resources/xslt/template.xsl?rev=1297313&view=auto > >> > ============================================================================== > >> --- > camel/trunk/components/camel-fop/src/test/resources/xslt/template.xsl > (added) > >> +++ > camel/trunk/components/camel-fop/src/test/resources/xslt/template.xsl Tue > Mar 6 01:10:05 2012 > >> @@ -0,0 +1,82 @@ > >> +<?xml version="1.0" encoding="UTF-8"?> > >> +<!-- > >> + Licensed to the Apache Software Foundation (ASF) under one or more > >> + contributor license agreements. See the NOTICE file distributed with > >> + this work for additional information regarding copyright ownership. > >> + The ASF licenses this file to You under the Apache License, Version > 2.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.apache.org/licenses/LICENSE-2.0 > >> + > >> + 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. > >> +--> > >> +<xsl:stylesheet version="1.1" xmlns:xsl=" > http://www.w3.org/1999/XSL/Transform" xmlns:fo=" > http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo"> > >> + <xsl:output method="xml" version="1.0" omit-xml-declaration="no" > indent="yes"/> > >> + <xsl:param name="versionParam" select="'1.0'"/> > >> + <!-- ========================= --> > >> + <!-- root element: projectteam --> > >> + <!-- ========================= --> > >> + <xsl:template match="projectteam"> > >> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> > >> + > >> + <fo:layout-master-set> > >> + <fo:simple-page-master master-name="simpleA4" > page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" > margin-left="2cm" margin-right="2cm"> > >> + <fo:region-body/> > >> + </fo:simple-page-master> > >> + </fo:layout-master-set> > >> + <fo:page-sequence master-reference="simpleA4"> > >> + <fo:flow flow-name="xsl-region-body"> > >> + <fo:block font-size="16pt" font-weight="bold" > space-after="5mm">Project: <xsl:value-of select="projectname"/> > >> + > >> + </fo:block> > >> + <fo:block font-size="12pt" space-after="5mm">Version > <xsl:value-of select="$versionParam"/> > >> + </fo:block> > >> + <fo:block font-size="10pt"> > >> + <fo:table table-layout="fixed" width="100%" > border-collapse="separate"> > >> + <fo:table-column column-width="4cm"/> > >> + <fo:table-column column-width="4cm"/> > >> + <fo:table-column column-width="5cm"/> > >> + > >> + <fo:table-body> > >> + <xsl:apply-templates select="member"/> > >> + </fo:table-body> > >> + </fo:table> > >> + </fo:block> > >> + </fo:flow> > >> + </fo:page-sequence> > >> + </fo:root> > >> + </xsl:template> > >> + > >> + <!-- ========================= --> > >> + <!-- child element: member --> > >> + <!-- ========================= --> > >> + <xsl:template match="member"> > >> + <fo:table-row> > >> + <xsl:if test="function = 'lead'"> > >> + <xsl:attribute name="font-weight">bold</xsl:attribute> > >> + </xsl:if> > >> + > >> + <fo:table-cell> > >> + <fo:block> > >> + <xsl:value-of select="name"/> > >> + </fo:block> > >> + </fo:table-cell> > >> + <fo:table-cell> > >> + <fo:block> > >> + <xsl:value-of select="function"/> > >> + </fo:block> > >> + </fo:table-cell> > >> + <fo:table-cell> > >> + <fo:block> > >> + <xsl:value-of select="email"/> > >> + </fo:block> > >> + </fo:table-cell> > >> + </fo:table-row> > >> + </xsl:template> > >> +</xsl:stylesheet> > >> + > >> > >> Modified: camel/trunk/components/pom.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/components/pom.xml?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- camel/trunk/components/pom.xml (original) > >> +++ camel/trunk/components/pom.xml Tue Mar 6 01:10:05 2012 > >> @@ -76,6 +76,7 @@ > >> <module>camel-eventadmin</module> > >> <module>camel-exec</module> > >> <module>camel-flatpack</module> > >> + <module>camel-fop</module> > >> <module>camel-freemarker</module> > >> <module>camel-ftp</module> > >> <module>camel-gae</module> > >> > >> Modified: camel/trunk/parent/pom.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- camel/trunk/parent/pom.xml (original) > >> +++ camel/trunk/parent/pom.xml Tue Mar 6 01:10:05 2012 > >> @@ -69,6 +69,7 @@ > >> <easymock-version>3.0</easymock-version> > >> <ehcache-bundle-version>2.4.3_1</ehcache-bundle-version> > >> <flatpack-version>3.2.0_1</flatpack-version> > >> + <fop-version>1.0</fop-version> > >> <ftpserver-version>1.0.5</ftpserver-version> > >> <freemarker-version>2.3.18</freemarker-version> > >> <geronimo-el-spec-version>1.0.1</geronimo-el-spec-version> > >> @@ -391,6 +392,11 @@ > >> </dependency> > >> <dependency> > >> <groupId>org.apache.camel</groupId> > >> + <artifactId>camel-fop</artifactId> > >> + <version>${project.version}</version> > >> + </dependency> > >> + <dependency> > >> + <groupId>org.apache.camel</groupId> > >> <artifactId>camel-freemarker</artifactId> > >> <version>${project.version}</version> > >> </dependency> > >> > >> Modified: camel/trunk/platforms/karaf/features/pom.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/platforms/karaf/features/pom.xml?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- camel/trunk/platforms/karaf/features/pom.xml (original) > >> +++ camel/trunk/platforms/karaf/features/pom.xml Tue Mar 6 01:10:05 > 2012 > >> @@ -60,6 +60,7 @@ > >> <flatpack-bundle-version>3.2.0_2</flatpack-bundle-version> > >> <felix-configadmin-version>1.2.4</felix-configadmin-version> > >> <felix-framework-version>2.0.5</felix-framework-version> > >> + <fop-bundle-version>1.0_2</fop-bundle-version> > >> <freemarker-bundle-version>2.3.18_1</freemarker-bundle-version> > >> <geronimo-el-version>1.0.1</geronimo-el-version> > >> > <geronimo-ws-metadata-spec-version>1.1.3</geronimo-ws-metadata-spec-version> > >> > >> Modified: > camel/trunk/platforms/karaf/features/src/main/resources/bundles.properties > >> URL: > http://svn.apache.org/viewvc/camel/trunk/platforms/karaf/features/src/main/resources/bundles.properties?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- > camel/trunk/platforms/karaf/features/src/main/resources/bundles.properties > (original) > >> +++ > camel/trunk/platforms/karaf/features/src/main/resources/bundles.properties > Tue Mar 6 01:10:05 2012 > >> @@ -40,6 +40,7 @@ org.apache.servicemix.bundles/org.apache > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-io/${commons-io-bundle-version}/jar > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/${dom4j-bundle-version}/jar > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.flatpack/${flatpack-bundle-version}/jar > >> > +org.apache.servicemix.bundles/org.apache.servicemix.bundles.fop/${fop-bundle-version}/jar > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.freemarker/${freemarker-bundle-version}/jar > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.hamcrest/${hamcrest-bundle-version}/jar > >> > > org.apache.servicemix.bundles/org.apache.servicemix.bundles.hapi/${hapi-bundle-version}/jar > >> > >> Modified: > camel/trunk/platforms/karaf/features/src/main/resources/features.xml > >> URL: > http://svn.apache.org/viewvc/camel/trunk/platforms/karaf/features/src/main/resources/features.xml?rev=1297313&r1=1297312&r2=1297313&view=diff > >> > ============================================================================== > >> --- > camel/trunk/platforms/karaf/features/src/main/resources/features.xml > (original) > >> +++ > camel/trunk/platforms/karaf/features/src/main/resources/features.xml Tue > Mar 6 01:10:05 2012 > >> @@ -276,6 +276,11 @@ > >> <bundle > dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.flatpack/${flatpack-bundle-version}</bundle> > >> > <bundle>mvn:org.apache.camel/camel-flatpack/${project.version}</bundle> > >> </feature> > >> + <feature name='camel-fop' version='${pom.version}' resolver='(obr)' > start-level='50'> > >> + <feature version='${project.version}'>camel-core</feature> > >> + <bundle > dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.fop/${fop-bundle-version}</bundle> > >> + <bundle>mvn:org.apache.camel/camel-fop/${project.version}</bundle> > >> + </feature> > >> <feature name='camel-freemarker' version='${project.version}' > resolver='(obr)' start-level='50'> > >> <feature version='${project.version}'>camel-core</feature> > >> <bundle > dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.freemarker/${freemarker-bundle-version}</bundle> > >> > >> > > > > > > > > -- > > Claus Ibsen > > ----------------- > > FuseSource > > Email: cib...@fusesource.com > > Web: http://fusesource.com > > Twitter: davsclaus, fusenews > > Blog: http://davsclaus.blogspot.com/ > > Author of Camel in Action: http://www.manning.com/ibsen/ > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: cib...@fusesource.com > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ >