Author: buildbot Date: Mon Oct 21 13:18:49 2013 New Revision: 883574 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/camel-2130-release.html websites/production/camel/content/etl-example.html Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/camel-2130-release.html ============================================================================== --- websites/production/camel/content/camel-2130-release.html (original) +++ websites/production/camel/content/camel-2130-release.html Mon Oct 21 13:18:49 2013 @@ -94,12 +94,12 @@ <p>Welcome to the 2.13.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p> -<ul><li>When using multiple OSGi Blueprint <cm:property-placeholder>'s then Camel now favors using non-default placeholders, or the last property-placeholder defined in the Blueprint XML file. This allows for example to define default properties in one placeholder, and override these values in other placeholders.</li><li><a shape="rect" href="ftp2.html" title="FTP2">FTP</a> consumer allow to download a single named file without using the FTP LIST command. This allows to download a known file from a FTP server even when the user account does not have permission to do FTP LIST command.</li><li><a shape="rect" href="ftp2.html" title="FTP2">FTP</a> consumer allow to ignore file not found or insufficient file permission errors.</li><li><a shape="rect" href="data-format.html" title="Data Format">Data Format</a> using marshal now leverages <a shape="rect" href="stream-caching.html" title="Stream caching">Stream caching</a> out of the box if enabled, which allows to marshal big stream s and spool to disk, instead of being pure in-memory based.</li><li>Improved using <a shape="rect" href="bean.html" title="Bean">Bean</a> when the bean is looked up in the <a shape="rect" href="registry.html" title="Registry">Registry</a>, when using concurrent processing in the route.</li><li>Added <tt>cache</tt> option to <tt>beanRef</tt> and <tt><bean></tt> in the DSL. This avoids looking up the <a shape="rect" href="bean.html" title="Bean">Bean</a> from the <a shape="rect" href="registry.html" title="Registry">Registry</a> on each usage; this can safely be done for singleton beans.</li><li>Configuring <a shape="rect" href="data-format.html" title="Data Format">Data Format</a>s in XML attributes now supports reference lookup using the # syntax, eg <tt><jaxb xmlStreamWriterWrapper="#myWriterWrapper" ..></tt></li><li><a shape="rect" href="jdbc.html" title="JDBC">JDBC</a> component now also support <tt>outputType</tt> to specify the expected output as either a List or si ngle Object. As well allow to map to a bean using a <tt>BeanRowMapper</tt> to control the mapping of ROW names to bean properties.</li><li>Both <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> as well as <a shape="rect" href="quartz2.html" title="Quartz2">Quartz2</a> based <a shape="rect" href="scheduledroutepolicy.html" title="ScheduledRoutePolicy">ScheduledRoutePolicy</a> has been improved to better support cluster setups (e.g. to not schedule jobs being already scheduled through another node inside a given cluster).</li><li>Reduced the work the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> EIP does while holding a lock during aggregation, which can lead to improved performance in some use-cases.</li><li><tt>JndiRegistry</tt> now implements all the find methods.</li><li><a shape="rect" href="vm.html" title="VM">VM</a> component now supports <tt>multipleConsumers=true</tt> across deployment units.</li><li>Added <tt>@PreConsumed</tt> to <a sha pe="rect" href="jpa.html" title="JPA">JPA</a> consumer.</li><li>Added CamelFileName header support to the <a shape="rect" href="hdfs.html" title="HDFS">HDFS</a> producer</li><li>Like as <tt>JpaConsumer</tt> now also <tt>JpaProducer</tt> of the <a shape="rect" href="jpa.html" title="JPA">JPA</a> component supports the <tt>CamelEntityManager</tt> header.</li></ul> +<ul><li>When using multiple OSGi Blueprint <cm:property-placeholder>'s then Camel now favors using non-default placeholders, or the last property-placeholder defined in the Blueprint XML file. This allows for example to define default properties in one placeholder, and override these values in other placeholders.</li><li><a shape="rect" href="ftp2.html" title="FTP2">FTP</a> consumer allow to download a single named file without using the FTP LIST command. This allows to download a known file from a FTP server even when the user account does not have permission to do FTP LIST command.</li><li><a shape="rect" href="ftp2.html" title="FTP2">FTP</a> consumer allow to ignore file not found or insufficient file permission errors.</li><li><a shape="rect" href="data-format.html" title="Data Format">Data Format</a> using marshal now leverages <a shape="rect" href="stream-caching.html" title="Stream caching">Stream caching</a> out of the box if enabled, which allows to marshal big stream s and spool to disk, instead of being pure in-memory based.</li><li>Improved using <a shape="rect" href="bean.html" title="Bean">Bean</a> when the bean is looked up in the <a shape="rect" href="registry.html" title="Registry">Registry</a>, when using concurrent processing in the route.</li><li>Added <tt>cache</tt> option to <tt>beanRef</tt> and <tt><bean></tt> in the DSL. This avoids looking up the <a shape="rect" href="bean.html" title="Bean">Bean</a> from the <a shape="rect" href="registry.html" title="Registry">Registry</a> on each usage; this can safely be done for singleton beans.</li><li>Configuring <a shape="rect" href="data-format.html" title="Data Format">Data Format</a>s in XML attributes now supports reference lookup using the # syntax, eg <tt><jaxb xmlStreamWriterWrapper="#myWriterWrapper" ..></tt></li><li><a shape="rect" href="jdbc.html" title="JDBC">JDBC</a> component now also support <tt>outputType</tt> to specify the expected output as either a List or si ngle Object. As well allow to map to a bean using a <tt>BeanRowMapper</tt> to control the mapping of ROW names to bean properties.</li><li>Both <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> as well as <a shape="rect" href="quartz2.html" title="Quartz2">Quartz2</a> based <a shape="rect" href="scheduledroutepolicy.html" title="ScheduledRoutePolicy">ScheduledRoutePolicy</a> has been improved to better support cluster setups (e.g. to not schedule jobs being already scheduled through another node inside a given cluster).</li><li>Reduced the work the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> EIP does while holding a lock during aggregation, which can lead to improved performance in some use-cases.</li><li><tt>JndiRegistry</tt> now implements all the find methods.</li><li><a shape="rect" href="vm.html" title="VM">VM</a> component now supports <tt>multipleConsumers=true</tt> across deployment units.</li><li>Added <tt>@PreConsumed</tt> to <a sha pe="rect" href="jpa.html" title="JPA">JPA</a> consumer.</li><li>Added CamelFileName header support to the <a shape="rect" href="hdfs.html" title="HDFS">HDFS</a> producer</li><li>Like as <tt>JpaConsumer</tt> now also <tt>JpaProducer</tt> of the <a shape="rect" href="jpa.html" title="JPA">JPA</a> component supports the <tt>CamelEntityManager</tt> header.</li><li><a shape="rect" href="restlet.html" title="Restlet">Restlet</a> consumer now supports returning custom headers as HTTP headers from the Camel <a shape="rect" href="message.html" title="Message">Message</a>.</li></ul> <h3><a shape="rect" name="Camel2.13.0Release-FixedIssues"></a>Fixed Issues</h3> -<ul><li>Fixed an <tt>ArrayIndexOutOfBoundsException</tt> with <a shape="rect" href="message-history.html" title="Message History">Message History</a> when using <a shape="rect" href="seda.html" title="SEDA">SEDA</a></li><li>Fixed <tt>requestTimeout</tt> on <a shape="rect" href="netty.html" title="Netty">Netty</a> not triggering when we have received message.</li><li>Fixed <a shape="rect" href="parameter-binding-annotations.html" title="Parameter Binding Annotations">Parameter Binding Annotations</a> on boolean types to evaluate as <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> instead of <a shape="rect" href="expression.html" title="Expression">Expression</a></li><li>Fixed using <a shape="rect" href="file2.html" title="File2">File</a> consumer with <tt>delete=true&readLock=fileLock</tt> not being able to delete the file on Windows.</li><li>Fixed <a shape="rect" href="throttler.html" title="Throttler">Throttler</a> to honor time slots after period expires ( eg so it works consistently and as expected).</li><li>Fixed getting JMSXUserID property when consuming from <a shape="rect" href="activemq.html" title="ActiveMQ">ActiveMQ</a></li><li>Fixed <a shape="rect" href="intercept.html" title="Intercept">interceptFrom</a> to support property placeholders</li><li>Fixed a race condition in initializing <tt>SSLContext</tt> in <a shape="rect" href="netty.html" title="Netty">Netty</a> and <a shape="rect" href="netty-http.html" title="Netty HTTP">Netty HTTP</a></li><li>Fixed using <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a>, <a shape="rect" href="routing-slip.html" title="Routing Slip">Routing Slip</a> calling another route which is configured with <tt>NoErrorHandler</tt>, and an exception occurred in that route, would be propagated back as not-exhausted, allow the caller route to have its error handler react on the exception.</li><li>Fixed <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> and exc eption was thrown when scheduling a job, would affect during shutdown, assuming the job was still in progress, and not shutdown the Quartz scheduler.</li><li>Fixed so you can configure <a shape="rect" href="stomp.html" title="Stomp">Stomp</a> endpoints using <a shape="rect" href="uris.html" title="URIs">URIs</a></li><li>Fixed memory leak when using <a shape="rect" href="language.html" title="Language">Language</a> component with <tt>camel-script</tt> languages and having <tt>contentCache=false</tt></li><li>Fixed <a shape="rect" href="error-handler.html" title="Error Handler">Error Handler</a> may log at <tt>WARN</tt> level "Cannot determine current route from Exchange" when using <a shape="rect" href="splitter.html" title="Splitter">Splitter</a></li><li>Fixed <tt>camel-fop</tt> to work in Apache <a shape="rect" href="karaf.html" title="Karaf">Karaf</a> and ServiceMix</li><li>Fixed <a shape="rect" href="hdfs.html" title="HDFS">HDFS</a> producer to use the configured <a shape="rect" h ref="uuidgenerator.html" title="UuidGenerator">UuidGenerator</a> when generating split file names to avoid filename collisions</li><li>Fixed <tt>JpaProducer</tt> and <tt>JpaConsumer</tt> of the <a shape="rect" href="jpa.html" title="JPA">JPA</a> component to not share/reuse the same <tt>EntityManager</tt> object which could cause problems if this would occur in the context of multiple/different threads.</li></ul> +<ul><li>Fixed an <tt>ArrayIndexOutOfBoundsException</tt> with <a shape="rect" href="message-history.html" title="Message History">Message History</a> when using <a shape="rect" href="seda.html" title="SEDA">SEDA</a></li><li>Fixed <tt>requestTimeout</tt> on <a shape="rect" href="netty.html" title="Netty">Netty</a> not triggering when we have received message.</li><li>Fixed <a shape="rect" href="parameter-binding-annotations.html" title="Parameter Binding Annotations">Parameter Binding Annotations</a> on boolean types to evaluate as <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> instead of <a shape="rect" href="expression.html" title="Expression">Expression</a></li><li>Fixed using <a shape="rect" href="file2.html" title="File2">File</a> consumer with <tt>delete=true&readLock=fileLock</tt> not being able to delete the file on Windows.</li><li>Fixed <a shape="rect" href="throttler.html" title="Throttler">Throttler</a> to honor time slots after period expires ( eg so it works consistently and as expected).</li><li>Fixed getting JMSXUserID property when consuming from <a shape="rect" href="activemq.html" title="ActiveMQ">ActiveMQ</a></li><li>Fixed <a shape="rect" href="intercept.html" title="Intercept">interceptFrom</a> to support property placeholders</li><li>Fixed a race condition in initializing <tt>SSLContext</tt> in <a shape="rect" href="netty.html" title="Netty">Netty</a> and <a shape="rect" href="netty-http.html" title="Netty HTTP">Netty HTTP</a></li><li>Fixed using <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a>, <a shape="rect" href="routing-slip.html" title="Routing Slip">Routing Slip</a> calling another route which is configured with <tt>NoErrorHandler</tt>, and an exception occurred in that route, would be propagated back as not-exhausted, allow the caller route to have its error handler react on the exception.</li><li>Fixed <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> and exc eption was thrown when scheduling a job, would affect during shutdown, assuming the job was still in progress, and not shutdown the Quartz scheduler.</li><li>Fixed so you can configure <a shape="rect" href="stomp.html" title="Stomp">Stomp</a> endpoints using <a shape="rect" href="uris.html" title="URIs">URIs</a></li><li>Fixed memory leak when using <a shape="rect" href="language.html" title="Language">Language</a> component with <tt>camel-script</tt> languages and having <tt>contentCache=false</tt></li><li>Fixed <a shape="rect" href="error-handler.html" title="Error Handler">Error Handler</a> may log at <tt>WARN</tt> level "Cannot determine current route from Exchange" when using <a shape="rect" href="splitter.html" title="Splitter">Splitter</a></li><li>Fixed <tt>camel-fop</tt> to work in Apache <a shape="rect" href="karaf.html" title="Karaf">Karaf</a> and ServiceMix</li><li>Fixed <a shape="rect" href="hdfs.html" title="HDFS">HDFS</a> producer to use the configured <a shape="rect" h ref="uuidgenerator.html" title="UuidGenerator">UuidGenerator</a> when generating split file names to avoid filename collisions</li><li>Fixed <tt>JpaProducer</tt> and <tt>JpaConsumer</tt> of the <a shape="rect" href="jpa.html" title="JPA">JPA</a> component to not share/reuse the same <tt>EntityManager</tt> object which could cause problems if this would occur in the context of multiple/different threads.</li><li>Fixed <a shape="rect" href="http4.html" title="HTTP4">HTTP4</a> to support multiple custom component names in use, each configured using different <tt>SSLContext</tt>.</li></ul> <h3><a shape="rect" name="Camel2.13.0Release-NewEnterpriseIntegrationPatterns"></a>New <a shape="rect" href="enterprise-integration-patterns.html" title="Enterprise Integration Patterns">Enterprise Integration Patterns</a></h3> Modified: websites/production/camel/content/etl-example.html ============================================================================== --- websites/production/camel/content/etl-example.html (original) +++ websites/production/camel/content/etl-example.html Mon Oct 21 13:18:49 2013 @@ -134,20 +134,19 @@ public class EtlRoutes extends SpringRou @Converter public class CustomerTransformer { - private static final transient Logger LOG = LoggerFactory.getLogger(CustomerTransformer.class); + private static final Logger LOG = LoggerFactory.getLogger(CustomerTransformer.class); /** * A transformation method to convert a person document into a customer * entity - * @throws Exception */ @Converter - public CustomerEntity toCustomer(PersonDocument doc, Exchange exchange) throws Exception { - JpaTemplate template = exchange.getIn().getHeader("CamelJpaTemplate", JpaTemplate.class); + public static CustomerEntity toCustomer(PersonDocument doc, Exchange exchange) throws Exception { + EntityManager entityManager = exchange.getIn().getHeader(JpaConstants.ENTITYMANAGER, EntityManager.class); + TransactionTemplate transactionTemplate = exchange.getContext().getRegistry().lookupByNameAndType("transactionTemplate", TransactionTemplate.class); - String user = doc.getUser(); - CustomerEntity customer = findCustomerByName(template, user); + CustomerEntity customer = findCustomerByName(transactionTemplate, entityManager, user); // let's convert information from the document into the entity bean customer.setUserName(user); @@ -155,23 +154,31 @@ public class CustomerTransformer { customer.setSurname(doc.getLastName()); customer.setCity(doc.getCity()); - LOG.debug("Created object customer: " + customer); + LOG.info("Created object customer: {}", customer); return customer; } /** * Finds a customer for the given username */ - protected CustomerEntity findCustomerByName(JpaTemplate template, String user) throws Exception { - List<CustomerEntity> list = CastUtils.cast(template.find("select x from customer" - + " x where x.userName = ?1", user)); - if (list.isEmpty()) { - CustomerEntity answer = new CustomerEntity(); - answer.setUserName(user); - return answer; - } else { - return list.get(0); - } + private static CustomerEntity findCustomerByName(TransactionTemplate transactionTemplate, final EntityManager entityManager, final String userName) throws Exception { + return transactionTemplate.execute(new TransactionCallback<CustomerEntity>() { + public CustomerEntity doInTransaction(TransactionStatus status) { + entityManager.joinTransaction(); + List<CustomerEntity> list = entityManager.createNamedQuery("findCustomerByUsername", CustomerEntity.class).setParameter("userName", userName).getResultList(); + CustomerEntity answer; + if (list.isEmpty()) { + answer = new CustomerEntity(); + answer.setUserName(userName); + LOG.info("Created a new CustomerEntity {} as no matching persisted entity found.", answer); + } else { + answer = list.get(0); + LOG.info("Found a matching CustomerEntity {} having the userName {}.", answer, userName); + } + + return answer; + } + }); } }