You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/03/17 10:06:57 UTC

[01/12] CAMEL-3933: Upgraded to protobuf 2.5

Repository: camel
Updated Branches:
  refs/heads/camel-2.13.x [created] f9a596657


http://git-wip-us.apache.org/repos/asf/camel/blob/56bd1e61/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index e17487e..d06c12a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -332,9 +332,8 @@
     <pdfbox-version>1.6.0</pdfbox-version>
     <plexus-container-default-version>1.0-alpha-48</plexus-container-default-version>
     <plexus-utils-version>1.5.6</plexus-utils-version>
-    <pojosr-version>0.2.1</pojosr-version>
-    <protobuf-java-bundle-version>2.3.0_3</protobuf-java-bundle-version>
-    <protobuf-version>2.3.0</protobuf-version>
+    <pojosr-version>0.2.1</pojosr-version>  
+    <protobuf-version>2.5.0</protobuf-version>
     <qpid-bundle-version>0.26_1</qpid-bundle-version>
     <qpid-version>0.26</qpid-version>
     <quartz-bundle-version>1.8.6_1</quartz-bundle-version>

http://git-wip-us.apache.org/repos/asf/camel/blob/56bd1e61/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 97fcfa8..61fb300 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -247,7 +247,7 @@
     <feature version='${project.version}'>camel-core</feature>
     <feature>http</feature>
     <bundle dependency='true'>mvn:com.google.guava/guava/${google-guava-version}</bundle>
-    <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.protobuf-java/${protobuf-java-bundle-version}</bundle>
+    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/${jackson2-version}</bundle>
     <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-smile/${jackson2-version}</bundle>
     <bundle dependency='true'>mvn:joda-time/joda-time/${jodatime-bundle-version}</bundle>
@@ -404,7 +404,7 @@
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient-bundle-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.commons/commons-math/${commons-math-version}</bundle>
     <bundle dependency='true'>mvn:commons-net/commons-net/${commons-net-version}</bundle>
-    <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.protobuf-java/${protobuf-java-bundle-version}</bundle>
+    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-core-asl/${jackson-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson-version}</bundle>
     <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/${jetty6-bundle-version}</bundle>
@@ -476,7 +476,7 @@
     <feature version='${project.version}'>camel-core</feature>
     <bundle dependency='true'>mvn:commons-lang/commons-lang/${commons-lang-version}</bundle>
     <bundle dependency='true'>mvn:com.google.guava/guava/${google-guava-version}</bundle>
-    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/2.5.0</bundle><!-- newer than ${protobuf-java-bundle-version} -->
+    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.guice/${guice-bundle-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch-bundle-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.paranamer/${paranamer-bundle-version}</bundle>
@@ -826,7 +826,7 @@
     <bundle dependency='true'>wrap:mvn:org.eclipse.jdt.core.compiler/ecj/${eclipse-compiler-version}</bundle>
     <bundle dependency='true'>mvn:org.mvel/mvel2/${mvel-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xstream/${xstream-bundle-version}</bundle>
-    <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.protobuf-java/${protobuf-java-bundle-version}</bundle>
+    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/${javax-inject-bundle-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-optaplanner/${project.version}</bundle>
   </feature>
@@ -840,7 +840,7 @@
   </feature>
   <feature name='camel-protobuf' 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.protobuf-java/${protobuf-java-bundle-version}</bundle>
+    <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-protobuf/${project.version}</bundle>
   </feature>
   <feature name='camel-quartz' version='${project.version}' resolver='(obr)' start-level='50'>


[08/12] git commit: Downgrade to Karaf 2.3.3

Posted by ni...@apache.org.
Downgrade to Karaf 2.3.3


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7516fdb6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7516fdb6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7516fdb6

Branch: refs/heads/camel-2.13.x
Commit: 7516fdb616d1ce8acaf992a949da11254086d492
Parents: 4528137
Author: Babak Vahdat <bv...@apache.org>
Authored: Sun Mar 16 20:54:11 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:44 2014 +0800

----------------------------------------------------------------------
 platforms/karaf/features/src/main/resources/config.properties  | 6 +++---
 .../java/org/apache/camel/itest/karaf/AbstractFeatureTest.java | 2 +-
 .../apache/camel/itest/osgi/OSGiIntegrationTestSupport.java    | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7516fdb6/platforms/karaf/features/src/main/resources/config.properties
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/config.properties b/platforms/karaf/features/src/main/resources/config.properties
index 69b6fff..d85b437 100755
--- a/platforms/karaf/features/src/main/resources/config.properties
+++ b/platforms/karaf/features/src/main/resources/config.properties
@@ -35,9 +35,9 @@ org.osgi.framework.system.packages= \
  org.osgi.service.packageadmin;uses:="org.osgi.framework";version="1.2",\
  org.osgi.service.url;version="1.0", \
  org.osgi.util.tracker;uses:="org.osgi.framework";version="1.5.1", \
- org.apache.karaf.jaas.boot;version="2.3.4", \
- org.apache.karaf.jaas.boot.principal;version="2.3.4", \
- org.apache.karaf.version;version="2.3.4", \
+ org.apache.karaf.jaas.boot;version="2.3.3", \
+ org.apache.karaf.jaas.boot.principal;version="2.3.3", \
+ org.apache.karaf.version;version="2.3.3", \
  ${jre-${java.specification.version}}
 
 org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,sun.*,com.sun.*,javax.transaction,javax.transaction.*

http://git-wip-us.apache.org/repos/asf/camel/blob/7516fdb6/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java
index ee0ce32..14b89e4 100644
--- a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java
+++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java
@@ -155,7 +155,7 @@ public abstract class AbstractFeatureTest {
             new Option[]{
                 karafDistributionConfiguration().frameworkUrl(
                     maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz").versionAsInProject())
-                    .karafVersion("2.3.4").name("Apache Karaf")
+                    .karafVersion("2.3.3").name("Apache Karaf")
                     .unpackDirectory(new File("target/paxexam/unpack/")),
                 
                 KarafDistributionOption.keepRuntimeFolder(),

http://git-wip-us.apache.org/repos/asf/camel/blob/7516fdb6/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/OSGiIntegrationTestSupport.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/OSGiIntegrationTestSupport.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/OSGiIntegrationTestSupport.java
index 95963e9..5e8282c 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/OSGiIntegrationTestSupport.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/OSGiIntegrationTestSupport.java
@@ -132,7 +132,7 @@ public class OSGiIntegrationTestSupport extends CamelTestSupport {
             new Option[] {
                       karafDistributionConfiguration()
                           .frameworkUrl(maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz").versionAsInProject())
-                          .karafVersion("2.3.4")
+                          .karafVersion("2.3.3")
                           .name("Apache Karaf")
                           .useDeployFolder(false).unpackDirectory(new File("target/paxexam/unpack/")),
 


[03/12] git commit: CAMEL-3933: Upgraded to protobuf 2.5

Posted by ni...@apache.org.
CAMEL-3933: Upgraded to protobuf 2.5


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/56bd1e61
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/56bd1e61
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/56bd1e61

Branch: refs/heads/camel-2.13.x
Commit: 56bd1e6172893bceddf6b0d2b2113e525b768bc7
Parents: 6bbc94f
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 16 12:59:37 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:02 2014 +0800

----------------------------------------------------------------------
 .../protobuf/generated/AddressBookProtos.java   | 2390 +++++++++++++-----
 parent/pom.xml                                  |    5 +-
 .../features/src/main/resources/features.xml    |   10 +-
 3 files changed, 1812 insertions(+), 593 deletions(-)
----------------------------------------------------------------------



[11/12] git commit: [CAMEL-7299] camel-hbase should install scripting-api bundle

Posted by ni...@apache.org.
[CAMEL-7299] camel-hbase should install scripting-api bundle


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/92950885
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/92950885
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/92950885

Branch: refs/heads/camel-2.13.x
Commit: 929508859a3c091f34bbd50c5e398784536a7bfe
Parents: e5fc7cc
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Mon Mar 17 09:02:47 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:05:22 2014 +0800

----------------------------------------------------------------------
 platforms/karaf/features/src/main/resources/features.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/92950885/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 61fb300..acd2e46 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -407,6 +407,7 @@
     <bundle dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-core-asl/${jackson-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson-version}</bundle>
+    <bundle dependency='true'>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix-specs-version}</bundle>
     <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/${jetty6-bundle-version}</bundle>
     <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/${javax-inject-bundle-version}</bundle>
     <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasper/${jasper-bundle-version}</bundle>


[07/12] git commit: Fix the broken build after the upgrade to protobuf 2.5

Posted by ni...@apache.org.
Fix the broken build after the upgrade to protobuf 2.5


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/45281376
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/45281376
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/45281376

Branch: refs/heads/camel-2.13.x
Commit: 452813765aba05efc810bfc6ae3e4b956a74fa01
Parents: 6cec847
Author: Babak Vahdat <bv...@apache.org>
Authored: Sun Mar 16 20:17:31 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:34 2014 +0800

----------------------------------------------------------------------
 .../protobuf/generated/AddressBookProtos.java   | 2172 ++++++++++++++----
 1 file changed, 1704 insertions(+), 468 deletions(-)
----------------------------------------------------------------------



[10/12] git commit: Make proper usage of the Class#getMethod() method signature with varargs

Posted by ni...@apache.org.
Make proper usage of the Class#getMethod() method signature with varargs


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e5fc7ccc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e5fc7ccc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e5fc7ccc

Branch: refs/heads/camel-2.13.x
Commit: e5fc7ccc3fca4f7cac8395191c72675823590cc5
Parents: af9e389
Author: Babak Vahdat <bv...@apache.org>
Authored: Sun Mar 16 22:44:38 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:05:09 2014 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java | 2 +-
 .../src/main/java/org/apache/camel/component/cxf/CxfConsumer.java  | 2 +-
 .../org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e5fc7ccc/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java b/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
index 5c158d9..6528dd4 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
@@ -105,7 +105,7 @@ public class AvroDataFormat extends ServiceSupport implements DataFormat, CamelC
 
         if (genericContainer.isAssignableFrom(instanceClass)) {
             try {
-                Method method = instanceClass.getMethod("getSchema", new Class[0]);
+                Method method = instanceClass.getMethod("getSchema");
                 return (Schema) method.invoke(camelContext.getInjector().newInstance(instanceClass));
             } catch (Exception ex) {
                 throw new CamelException("Error calling getSchema on " + instanceClass, ex);

http://git-wip-us.apache.org/repos/asf/camel/blob/e5fc7ccc/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index cd68921..7585b38 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -236,7 +236,7 @@ public class CxfConsumer extends DefaultConsumer {
                         WebFault faultAnnotation = t.getClass().getAnnotation(WebFault.class);
                         Object faultInfo = null;
                         try {
-                            Method method = t.getClass().getMethod("getFaultInfo", new Class[0]);
+                            Method method = t.getClass().getMethod("getFaultInfo");
                             faultInfo = method.invoke(t, new Object[0]);
                         } catch (Exception e) {
                             // do nothing here                            

http://git-wip-us.apache.org/repos/asf/camel/blob/e5fc7ccc/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java b/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
index 1c240d4..446edfc 100755
--- a/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
+++ b/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
@@ -99,7 +99,7 @@ public class ProtobufDataFormat extends ServiceSupport implements DataFormat, Ca
         Class<?> instanceClass = context.getClassResolver().resolveMandatoryClass(className);
         if (Message.class.isAssignableFrom(instanceClass)) {
             try {
-                Method method = instanceClass.getMethod("getDefaultInstance", new Class[0]);
+                Method method = instanceClass.getMethod("getDefaultInstance");
                 return (Message) method.invoke(null, new Object[0]);
             } catch (Exception ex) {
                 throw new CamelException("Can't set the defaultInstance of ProtobufferDataFormat with "


[04/12] git commit: CAMEL-3933: Get rid of synchronized code in unmarhal in protobuf dataformat.

Posted by ni...@apache.org.
CAMEL-3933: Get rid of synchronized code in unmarhal in protobuf dataformat.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/46191509
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/46191509
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/46191509

Branch: refs/heads/camel-2.13.x
Commit: 46191509a9306c8e5d03bacc9d53c41fd8a13fd9
Parents: 56bd1e6
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 16 13:30:45 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:16 2014 +0800

----------------------------------------------------------------------
 .../dataformat/protobuf/ProtobufDataFormat.java | 89 +++++++++++---------
 .../protobuf/generated/AddressBookProtos.java   | 19 ++++-
 2 files changed, 66 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/46191509/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java b/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
index 15b47a2..1c240d4 100755
--- a/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
+++ b/components/camel-protobuf/src/main/java/org/apache/camel/dataformat/protobuf/ProtobufDataFormat.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.dataformat.protobuf;
 
 import java.io.InputStream;
@@ -24,30 +23,36 @@ import com.google.protobuf.Message;
 import com.google.protobuf.Message.Builder;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelException;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
+public class ProtobufDataFormat extends ServiceSupport implements DataFormat, CamelContextAware {
 
-public class ProtobufDataFormat implements DataFormat {
-
+    private CamelContext camelContext;
     private Message defaultInstance;
     private String instanceClassName;
     
-    
-    /**
-     * @param defaultInstance
-     */
+    public ProtobufDataFormat() {
+    }
+
     public ProtobufDataFormat(Message defaultInstance) {
         this.defaultInstance = defaultInstance;
     }
-    
-    public ProtobufDataFormat() {
+
+    public CamelContext getCamelContext() {
+        return camelContext;
     }
-    
-    public void setDefaultInstace(Message instance) {
+
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    public void setDefaultInstance(Message instance) {
         this.defaultInstance = instance;
     }
     
@@ -59,38 +64,11 @@ public class ProtobufDataFormat implements DataFormat {
         }
     }
     
-    public synchronized Message getInstance(Exchange exchange) throws Exception {
-        if (defaultInstance == null) {
-            if (instanceClassName == null) {
-                throw new CamelException("There is not defaultInstance for protobuf unmarshaling");
-            } else {
-                defaultInstance = loadDefaultInstance(instanceClassName, exchange.getContext());
-            }
-        }
-        return defaultInstance;
-    }
-    
     public void setInstanceClass(String className) throws Exception {
         ObjectHelper.notNull(className, "ProtobufDataFormat instaceClass");
         instanceClassName = className;
     }
     
-    protected Message loadDefaultInstance(String className, CamelContext context) throws CamelException, ClassNotFoundException {
-        Class<?> instanceClass = context.getClassResolver().resolveMandatoryClass(className);
-        if (Message.class.isAssignableFrom(instanceClass)) {
-            try {
-                Method method = instanceClass.getMethod("getDefaultInstance", new Class[0]);
-                return (Message) method.invoke(null, new Object[0]);
-            } catch (Exception ex) {
-                throw new CamelException("Can't set the defaultInstance of ProtobufferDataFormat with " 
-                                         + className + ", caused by " + ex);
-            }
-        } else {
-            throw new CamelException("Can't set the defaultInstance of ProtobufferDataFormat with " 
-                  + className + ", as the class is not a subClass of com.google.protobuf.Message");
-        }
-    }
-
     /*
      * (non-Javadoc)
      * @see org.apache.camel.spi.DataFormat#marshal(org.apache.camel.Exchange,
@@ -106,14 +84,43 @@ public class ProtobufDataFormat implements DataFormat {
      * java.io.InputStream)
      */
     public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
-        Message instance = getInstance(exchange);
-        Builder builder = instance.newBuilderForType().mergeFrom(inputStream);
+        ObjectHelper.notNull(defaultInstance, "defaultInstance or instanceClassName must be set", this);
+
+        Builder builder = defaultInstance.newBuilderForType().mergeFrom(inputStream);
         if (!builder.isInitialized()) {
             // TODO which exception should be thrown here?
-            throw new InvalidPayloadException(exchange, instance.getClass());
+            throw new InvalidPayloadException(exchange, defaultInstance.getClass());
         }
 
         return builder.build();
     }
 
+    protected Message loadDefaultInstance(String className, CamelContext context) throws CamelException, ClassNotFoundException {
+        Class<?> instanceClass = context.getClassResolver().resolveMandatoryClass(className);
+        if (Message.class.isAssignableFrom(instanceClass)) {
+            try {
+                Method method = instanceClass.getMethod("getDefaultInstance", new Class[0]);
+                return (Message) method.invoke(null, new Object[0]);
+            } catch (Exception ex) {
+                throw new CamelException("Can't set the defaultInstance of ProtobufferDataFormat with "
+                        + className + ", caused by " + ex);
+            }
+        } else {
+            throw new CamelException("Can't set the defaultInstance of ProtobufferDataFormat with "
+                    + className + ", as the class is not a subClass of com.google.protobuf.Message");
+        }
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        if (defaultInstance == null && instanceClassName != null) {
+            defaultInstance = loadDefaultInstance(instanceClassName, getCamelContext());
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/46191509/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
----------------------------------------------------------------------
diff --git a/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java b/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
index 33dff5f..f88a9c0 100644
--- a/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
+++ b/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
@@ -1,8 +1,25 @@
+/**
+ * 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.
+ */
+
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: addressbook.proto
-
 package org.apache.camel.dataformat.protobuf.generated;
 
+//CHECKSTYLE:OFF
 public final class AddressBookProtos {
   private AddressBookProtos() {}
   public static void registerAllExtensions(


[02/12] CAMEL-3933: Upgraded to protobuf 2.5

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/56bd1e61/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
----------------------------------------------------------------------
diff --git a/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java b/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
old mode 100755
new mode 100644
index 0744f1f..33dff5f
--- a/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
+++ b/components/camel-protobuf/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
@@ -1,67 +1,232 @@
-/**
- * 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.
- */
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: addressbook.proto
 
 package org.apache.camel.dataformat.protobuf.generated;
 
-//CHECKSTYLE:OFF
 public final class AddressBookProtos {
   private AddressBookProtos() {}
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistry registry) {
   }
+  public interface PersonOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required int32 id = 2;
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    int getId();
+
+    // optional string email = 3;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    boolean hasEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    java.lang.String getEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEmailBytes();
+
+    // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> 
+        getPhoneList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index);
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    int getPhoneCount();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+        getPhoneOrBuilderList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person}
+   */
   public static final class Person extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements PersonOrBuilder {
     // Use Person.newBuilder() to construct.
-    private Person() {
-      initFields();
+    private Person(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private Person(boolean noInit) {}
-    
+    private Person(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final Person defaultInstance;
     public static Person getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public Person getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Person(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              id_ = input.readInt32();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              email_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              phone_.add(input.readMessage(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          phone_ = java.util.Collections.unmodifiableList(phone_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
     }
-    
+
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable;
+      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Person> PARSER =
+        new com.google.protobuf.AbstractParser<Person>() {
+      public Person parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Person(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Person> getParserForType() {
+      return PARSER;
     }
-    
+
+    /**
+     * Protobuf enum {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneType}
+     */
     public enum PhoneType
         implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>MOBILE = 0;</code>
+       */
       MOBILE(0, 0),
+      /**
+       * <code>HOME = 1;</code>
+       */
       HOME(1, 1),
+      /**
+       * <code>WORK = 2;</code>
+       */
       WORK(2, 2),
       ;
-      
-      
+
+      /**
+       * <code>MOBILE = 0;</code>
+       */
+      public static final int MOBILE_VALUE = 0;
+      /**
+       * <code>HOME = 1;</code>
+       */
+      public static final int HOME_VALUE = 1;
+      /**
+       * <code>WORK = 2;</code>
+       */
+      public static final int WORK_VALUE = 2;
+
+
       public final int getNumber() { return value; }
-      
+
       public static PhoneType valueOf(int value) {
         switch (value) {
           case 0: return MOBILE;
@@ -70,7 +235,7 @@ public final class AddressBookProtos {
           default: return null;
         }
       }
-      
+
       public static com.google.protobuf.Internal.EnumLiteMap<PhoneType>
           internalGetValueMap() {
         return internalValueMap;
@@ -79,10 +244,10 @@ public final class AddressBookProtos {
           internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<PhoneType>() {
               public PhoneType findValueByNumber(int number) {
-                return PhoneType.valueOf(number)
-      ;        }
+                return PhoneType.valueOf(number);
+              }
             };
-      
+
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(index);
@@ -95,10 +260,9 @@ public final class AddressBookProtos {
           getDescriptor() {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDescriptor().getEnumTypes().get(0);
       }
-      
-      private static final PhoneType[] VALUES = {
-        MOBILE, HOME, WORK, 
-      };
+
+      private static final PhoneType[] VALUES = values();
+
       public static PhoneType valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -107,242 +271,416 @@ public final class AddressBookProtos {
         }
         return VALUES[desc.getIndex()];
       }
+
       private final int index;
       private final int value;
+
       private PhoneType(int index, int value) {
         this.index = index;
         this.value = value;
       }
-      
-      static {
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.getDescriptor();
-      }
-      
+
       // @@protoc_insertion_point(enum_scope:org.apache.camel.dataformat.protobuf.generated.Person.PhoneType)
     }
-    
+
+    public interface PhoneNumberOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string number = 1;
+      /**
+       * <code>required string number = 1;</code>
+       */
+      boolean hasNumber();
+      /**
+       * <code>required string number = 1;</code>
+       */
+      java.lang.String getNumber();
+      /**
+       * <code>required string number = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNumberBytes();
+
+      // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType();
+    }
+    /**
+     * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber}
+     */
     public static final class PhoneNumber extends
-        com.google.protobuf.GeneratedMessage {
+        com.google.protobuf.GeneratedMessage
+        implements PhoneNumberOrBuilder {
       // Use PhoneNumber.newBuilder() to construct.
-      private PhoneNumber() {
-        initFields();
+      private PhoneNumber(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
       }
-      private PhoneNumber(boolean noInit) {}
-      
+      private PhoneNumber(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
       private static final PhoneNumber defaultInstance;
       public static PhoneNumber getDefaultInstance() {
         return defaultInstance;
       }
-      
+
       public PhoneNumber getDefaultInstanceForType() {
         return defaultInstance;
       }
-      
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private PhoneNumber(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                number_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                int rawValue = input.readEnum();
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(2, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable;
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<PhoneNumber> PARSER =
+          new com.google.protobuf.AbstractParser<PhoneNumber>() {
+        public PhoneNumber parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new PhoneNumber(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<PhoneNumber> getParserForType() {
+        return PARSER;
       }
-      
+
+      private int bitField0_;
       // required string number = 1;
       public static final int NUMBER_FIELD_NUMBER = 1;
-      private boolean hasNumber;
-      private java.lang.String number_ = "";
-      public boolean hasNumber() { return hasNumber; }
-      public java.lang.String getNumber() { return number_; }
-      
+      private java.lang.Object number_;
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public java.lang.String getNumber() {
+        java.lang.Object ref = number_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            number_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNumberBytes() {
+        java.lang.Object ref = number_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          number_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
       // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
       public static final int TYPE_FIELD_NUMBER = 2;
-      private boolean hasType;
       private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType type_;
-      public boolean hasType() { return hasType; }
-      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() { return type_; }
-      
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() {
+        return type_;
+      }
+
       private void initFields() {
+        number_ = "";
         type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
       }
+      private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
-        if (!hasNumber) return false;
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         getSerializedSize();
-        if (hasNumber()) {
-          output.writeString(1, getNumber());
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNumberBytes());
         }
-        if (hasType()) {
-          output.writeEnum(2, getType().getNumber());
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(2, type_.getNumber());
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
-        if (hasNumber()) {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.protobuf.CodedOutputStream
-            .computeStringSize(1, getNumber());
+            .computeBytesSize(1, getNumberBytes());
         }
-        if (hasType()) {
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
           size += com.google.protobuf.CodedOutputStream
-            .computeEnumSize(2, getType().getNumber());
+            .computeEnumSize(2, type_.getNumber());
         }
         size += getUnknownFields().getSerializedSize();
         memoizedSerializedSize = size;
         return size;
       }
-      
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.ByteString data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.ByteString data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(byte[] data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           byte[] data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseDelimitedFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber}
+       */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> {
-        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result;
-        
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder.class);
+        }
+
         // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.newBuilder()
-        private Builder() {}
-        
-        private static Builder create() {
-          Builder builder = new Builder();
-          builder.result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber();
-          return builder;
+        private Builder() {
+          maybeForceBuilderInitialization();
         }
-        
-        protected org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber internalGetResult() {
-          return result;
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
         }
-        
-        public Builder clear() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "Cannot call clear() after build().");
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
           }
-          result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber();
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          number_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
-        
+
         public Builder clone() {
-          return create().mergeFrom(result);
+          return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDescriptor();
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
         }
-        
+
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getDefaultInstanceForType() {
           return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance();
         }
-        
-        public boolean isInitialized() {
-          return result.isInitialized();
-        }
+
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber build() {
-          if (result != null && !isInitialized()) {
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result = buildPartial();
+          if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
           }
-          return buildPartial();
-        }
-        
-        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber buildParsed()
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          if (!isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return buildPartial();
+          return result;
         }
-        
+
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber buildPartial() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "build() has already been called on this Builder.");
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
           }
-          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber returnMe = result;
-          result = null;
-          return returnMe;
+          result.number_ = number_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
         }
-        
+
         public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber) {
             return mergeFrom((org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber)other);
@@ -351,11 +689,13 @@ public final class AddressBookProtos {
             return this;
           }
         }
-        
+
         public Builder mergeFrom(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber other) {
           if (other == org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance()) return this;
           if (other.hasNumber()) {
-            setNumber(other.getNumber());
+            bitField0_ |= 0x00000001;
+            number_ = other.number_;
+            onChanged();
           }
           if (other.hasType()) {
             setType(other.getType());
@@ -363,336 +703,546 @@ public final class AddressBookProtos {
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
+        public final boolean isInitialized() {
+          if (!hasNumber()) {
+            
+            return false;
+          }
+          return true;
+        }
+
         public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                }
-                break;
-              }
-              case 10: {
-                setNumber(input.readString());
-                break;
-              }
-              case 16: {
-                int rawValue = input.readEnum();
-                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.valueOf(rawValue);
-                if (value == null) {
-                  unknownFields.mergeVarintField(2, rawValue);
-                } else {
-                  setType(value);
-                }
-                break;
-              }
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-        
-        
+        private int bitField0_;
+
         // required string number = 1;
+        private java.lang.Object number_ = "";
+        /**
+         * <code>required string number = 1;</code>
+         */
         public boolean hasNumber() {
-          return result.hasNumber();
+          return ((bitField0_ & 0x00000001) == 0x00000001);
         }
+        /**
+         * <code>required string number = 1;</code>
+         */
         public java.lang.String getNumber() {
-          return result.getNumber();
+          java.lang.Object ref = number_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            number_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNumberBytes() {
+          java.lang.Object ref = number_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            number_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
         }
-        public Builder setNumber(java.lang.String value) {
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public Builder setNumber(
+            java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
-  result.hasNumber = true;
-          result.number_ = value;
+  bitField0_ |= 0x00000001;
+          number_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>required string number = 1;</code>
+         */
         public Builder clearNumber() {
-          result.hasNumber = false;
-          result.number_ = getDefaultInstance().getNumber();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          number_ = getDefaultInstance().getNumber();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public Builder setNumberBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          number_ = value;
+          onChanged();
           return this;
         }
-        
+
         // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
+        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public boolean hasType() {
-          return result.hasType();
+          return ((bitField0_ & 0x00000002) == 0x00000002);
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() {
-          return result.getType();
+          return type_;
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public Builder setType(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value) {
           if (value == null) {
             throw new NullPointerException();
           }
-          result.hasType = true;
-          result.type_ = value;
+          bitField0_ |= 0x00000002;
+          type_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public Builder clearType() {
-          result.hasType = false;
-          result.type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          onChanged();
           return this;
         }
-        
+
         // @@protoc_insertion_point(builder_scope:org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber)
       }
-      
+
       static {
         defaultInstance = new PhoneNumber(true);
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internalForceInit();
         defaultInstance.initFields();
       }
-      
+
       // @@protoc_insertion_point(class_scope:org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber)
     }
-    
+
+    private int bitField0_;
     // required string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
-    private boolean hasName;
-    private java.lang.String name_ = "";
-    public boolean hasName() { return hasName; }
-    public java.lang.String getName() { return name_; }
-    
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
     // required int32 id = 2;
     public static final int ID_FIELD_NUMBER = 2;
-    private boolean hasId;
-    private int id_ = 0;
-    public boolean hasId() { return hasId; }
-    public int getId() { return id_; }
-    
+    private int id_;
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    public int getId() {
+      return id_;
+    }
+
     // optional string email = 3;
     public static final int EMAIL_FIELD_NUMBER = 3;
-    private boolean hasEmail;
-    private java.lang.String email_ = "";
-    public boolean hasEmail() { return hasEmail; }
-    public java.lang.String getEmail() { return email_; }
-    
+    private java.lang.Object email_;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public boolean hasEmail() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public java.lang.String getEmail() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          email_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEmailBytes() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        email_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
     // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
     public static final int PHONE_FIELD_NUMBER = 4;
-    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_ =
-      java.util.Collections.emptyList();
+    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
     public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> getPhoneList() {
       return phone_;
     }
-    public int getPhoneCount() { return phone_.size(); }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+        getPhoneOrBuilderList() {
+      return phone_;
+    }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public int getPhoneCount() {
+      return phone_.size();
+    }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
     public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index) {
       return phone_.get(index);
     }
-    
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+        int index) {
+      return phone_.get(index);
+    }
+
     private void initFields() {
+      name_ = "";
+      id_ = 0;
+      email_ = "";
+      phone_ = java.util.Collections.emptyList();
     }
+    private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
-      if (!hasName) return false;
-      if (!hasId) return false;
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
-        if (!element.isInitialized()) return false;
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getPhoneCount(); i++) {
+        if (!getPhone(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
       }
+      memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
-      if (hasName()) {
-        output.writeString(1, getName());
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
       }
-      if (hasId()) {
-        output.writeInt32(2, getId());
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(2, id_);
       }
-      if (hasEmail()) {
-        output.writeString(3, getEmail());
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEmailBytes());
       }
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
-        output.writeMessage(4, element);
+      for (int i = 0; i < phone_.size(); i++) {
+        output.writeMessage(4, phone_.get(i));
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
-      if (hasName()) {
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeStringSize(1, getName());
+          .computeBytesSize(1, getNameBytes());
       }
-      if (hasId()) {
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(2, getId());
+          .computeInt32Size(2, id_);
       }
-      if (hasEmail()) {
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeStringSize(3, getEmail());
+          .computeBytesSize(3, getEmailBytes());
       }
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
+      for (int i = 0; i < phone_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, element);
+          .computeMessageSize(4, phone_.get(i));
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
     }
-    
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
-    
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person}
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> {
-      private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result;
-      
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.Builder.class);
+      }
+
       // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.newBuilder()
-      private Builder() {}
-      
-      private static Builder create() {
-        Builder builder = new Builder();
-        builder.result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person();
-        return builder;
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      
-      protected org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person internalGetResult() {
-        return result;
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPhoneFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
       }
-      
+
       public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        email_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (phoneBuilder_ == null) {
+          phone_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          phoneBuilder_.clear();
         }
-        result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person();
         return this;
       }
-      
+
       public Builder clone() {
-        return create().mergeFrom(result);
+        return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDescriptor();
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
       }
-      
+
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person getDefaultInstanceForType() {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDefaultInstance();
       }
-      
-      public boolean isInitialized() {
-        return result.isInitialized();
-      }
+
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person build() {
-        if (result != null && !isInitialized()) {
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result = buildPartial();
+        if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
-        return buildPartial();
-      }
-      
-      private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        if (!isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return buildPartial();
+        return result;
       }
-      
+
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person buildPartial() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "build() has already been called on this Builder.");
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
         }
-        if (!result.phone_.isEmpty()) {
-          result.phone_ =
-            java.util.Collections.unmodifiableList(result.phone_);
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.email_ = email_;
+        if (phoneBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            phone_ = java.util.Collections.unmodifiableList(phone_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.phone_ = phone_;
+        } else {
+          result.phone_ = phoneBuilder_.build();
         }
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person returnMe = result;
-        result = null;
-        return returnMe;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
       }
-      
+
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person) {
           return mergeFrom((org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person)other);
@@ -701,413 +1251,886 @@ public final class AddressBookProtos {
           return this;
         }
       }
-      
+
       public Builder mergeFrom(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person other) {
         if (other == org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDefaultInstance()) return this;
         if (other.hasName()) {
-          setName(other.getName());
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
         }
         if (other.hasId()) {
           setId(other.getId());
         }
         if (other.hasEmail()) {
-          setEmail(other.getEmail());
+          bitField0_ |= 0x00000004;
+          email_ = other.email_;
+          onChanged();
         }
-        if (!other.phone_.isEmpty()) {
-          if (result.phone_.isEmpty()) {
-            result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        if (phoneBuilder_ == null) {
+          if (!other.phone_.isEmpty()) {
+            if (phone_.isEmpty()) {
+              phone_ = other.phone_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensurePhoneIsMutable();
+              phone_.addAll(other.phone_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.phone_.isEmpty()) {
+            if (phoneBuilder_.isEmpty()) {
+              phoneBuilder_.dispose();
+              phoneBuilder_ = null;
+              phone_ = other.phone_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              phoneBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPhoneFieldBuilder() : null;
+            } else {
+              phoneBuilder_.addAllMessages(other.phone_);
+            }
           }
-          result.phone_.addAll(other.phone_);
         }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasId()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getPhoneCount(); i++) {
+          if (!getPhone(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              }
-              break;
-            }
-            case 10: {
-              setName(input.readString());
-              break;
-            }
-            case 16: {
-              setId(input.readInt32());
-              break;
-            }
-            case 26: {
-              setEmail(input.readString());
-              break;
-            }
-            case 34: {
-              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder subBuilder = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.newBuilder();
-              input.readMessage(subBuilder, extensionRegistry);
-              addPhone(subBuilder.buildPartial());
-              break;
-            }
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
-      
+      private int bitField0_;
+
       // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
       public boolean hasName() {
-        return result.hasName();
+        return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required string name = 1;</code>
+       */
       public java.lang.String getName() {
-        return result.getName();
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
       }
-      public Builder setName(java.lang.String value) {
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasName = true;
-        result.name_ = value;
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required string name = 1;</code>
+       */
       public Builder clearName() {
-        result.hasName = false;
-        result.name_ = getDefaultInstance().getName();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
         return this;
       }
-      
+
       // required int32 id = 2;
+      private int id_ ;
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public boolean hasId() {
-        return result.hasId();
+        return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public int getId() {
-        return result.getId();
+        return id_;
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public Builder setId(int value) {
-        result.hasId = true;
-        result.id_ = value;
+        bitField0_ |= 0x00000002;
+        id_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public Builder clearId() {
-        result.hasId = false;
-        result.id_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        id_ = 0;
+        onChanged();
         return this;
       }
-      
+
       // optional string email = 3;
+      private java.lang.Object email_ = "";
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public boolean hasEmail() {
-        return result.hasEmail();
+        return ((bitField0_ & 0x00000004) == 0x00000004);
       }
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public java.lang.String getEmail() {
-        return result.getEmail();
+        java.lang.Object ref = email_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          email_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-      public Builder setEmail(java.lang.String value) {
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEmailBytes() {
+        java.lang.Object ref = email_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          email_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmail(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasEmail = true;
-        result.email_ = value;
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public Builder clearEmail() {
-        result.hasEmail = false;
-        result.email_ = getDefaultInstance().getEmail();
+        bitField0_ = (bitField0_ & ~0x00000004);
+        email_ = getDefaultInstance().getEmail();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmailBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
         return this;
       }
-      
+
       // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
+      private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_ =
+        java.util.Collections.emptyList();
+      private void ensurePhoneIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>(phone_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> phoneBuilder_;
+
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> getPhoneList() {
-        return java.util.Collections.unmodifiableList(result.phone_);
+        if (phoneBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(phone_);
+        } else {
+          return phoneBuilder_.getMessageList();
+        }
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public int getPhoneCount() {
-        return result.getPhoneCount();
+        if (phoneBuilder_ == null) {
+          return phone_.size();
+        } else {
+          return phoneBuilder_.getCount();
+        }
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index) {
-        return result.getPhone(index);
+        if (phoneBuilder_ == null) {
+          return phone_.get(index);
+        } else {
+          return phoneBuilder_.getMessage(index);
+        }
       }
-      public Builder setPhone(int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
-        if (value == null) {
-          throw new NullPointerException();
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder setPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.set(index, value);
+          onChanged();
+        } else {
+          phoneBuilder_.setMessage(index, value);
         }
-        result.phone_.set(index, value);
         return this;
       }
-      public Builder setPhone(int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
-        result.phone_.set(index, builderForValue.build());
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder setPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.setMessage(index, builderForValue.build());
+        }
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder addPhone(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
-        if (value == null) {
-          throw new NullPointerException();
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.add(value);
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(value);
         }
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.add(index, value);
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(index, value);
         }
-        result.phone_.add(value);
         return this;
       }
-      public Builder addPhone(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.add(builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(index, builderForValue.build());
         }
-        result.phone_.add(builderForValue.build());
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder addAllPhone(
           java.lang.Iterable<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> values) {
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          super.addAll(values, phone_);
+          onChanged();
+        } else {
+          phoneBuilder_.addAllMessages(values);
         }
-        super.addAll(values, result.phone_);
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder clearPhone() {
-        result.phone_ = java.util.Collections.emptyList();
+        if (phoneBuilder_ == null) {
+          phone_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          phoneBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder removePhone(int index) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.remove(index);
+          onChanged();
+        } else {
+          phoneBuilder_.remove(index);
+        }
         return this;
       }
-      
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder getPhoneBuilder(
+          int index) {
+        return getPhoneFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+          int index) {
+        if (phoneBuilder_ == null) {
+          return phone_.get(index);  } else {
+          return phoneBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+           getPhoneOrBuilderList() {
+        if (phoneBuilder_ != null) {
+          return phoneBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(phone_);
+        }
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder addPhoneBuilder() {
+        return getPhoneFieldBuilder().addBuilder(
+            org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder addPhoneBuilder(
+          int index) {
+        return getPhoneFieldBuilder().addBuilder(
+            index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder> 
+           getPhoneBuilderList() {
+        return getPhoneFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+          getPhoneFieldBuilder() {
+        if (phoneBuilder_ == null) {
+          phoneBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder>(
+                  phone_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          phone_ = null;
+        }
+        return phoneBuilder_;
+      }
+
       // @@protoc_insertion_point(builder_scope:org.apache.camel.dataformat.protobuf.generated.Person)
     }
-    
+
     static {
       defaultInstance = new Person(true);
-      org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internalForceInit();
       defaultInstance.initFields();
     }
-    
+
     // @@protoc_insertion_point(class_scope:org.apache.camel.dataformat.protobuf.generated.Person)
   }
-  
+
+  public interface AddressBookOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person> 
+        getPersonList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person getPerson(int index);
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    int getPersonCount();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder> 
+        getPersonOrBuilderList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder getPersonOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.AddressBook}
+   */
   public static final class AddressBook extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements AddressBookOrBuilder {
     // Use AddressBook.newBuilder() to construct.
-    private AddressBook() {
-      initFields();
+    private AddressBook(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private AddressBook(boolean noInit) {}
-    
+    private AddressBook(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final AddressBook defaultInstance;
     public static AddressBook getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public AddressBook getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AddressBook(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                person_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              person_.add(input.readMessage(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.prot

<TRUNCATED>

[06/12] Fix the broken build after the upgrade to protobuf 2.5

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/45281376/tests/camel-itest-osgi/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
index 0f21683..f88a9c0 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/dataformat/protobuf/generated/AddressBookProtos.java
@@ -17,22 +17,94 @@
 
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: addressbook.proto
-
 package org.apache.camel.dataformat.protobuf.generated;
 
-// CHECKSTYLE:OFF
+//CHECKSTYLE:OFF
 public final class AddressBookProtos {
   private AddressBookProtos() {}
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistry registry) {
   }
+  public interface PersonOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required int32 id = 2;
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    int getId();
+
+    // optional string email = 3;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    boolean hasEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    java.lang.String getEmail();
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEmailBytes();
+
+    // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> 
+        getPhoneList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index);
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    int getPhoneCount();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+        getPhoneOrBuilderList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person}
+   */
   public static final class Person extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements PersonOrBuilder {
     // Use Person.newBuilder() to construct.
-    private Person() {
-      initFields();
+    private Person(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private Person(boolean noInit) {}
+    private Person(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
 
     private static final Person defaultInstance;
     public static Person getDefaultInstance() {
@@ -43,6 +115,73 @@ public final class AddressBookProtos {
       return defaultInstance;
     }
 
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Person(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              id_ = input.readInt32();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              email_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              phone_.add(input.readMessage(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          phone_ = java.util.Collections.unmodifiableList(phone_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
@@ -50,16 +189,58 @@ public final class AddressBookProtos {
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable;
+      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.Builder.class);
     }
 
+    public static com.google.protobuf.Parser<Person> PARSER =
+        new com.google.protobuf.AbstractParser<Person>() {
+      public Person parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Person(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Person> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneType}
+     */
     public enum PhoneType
         implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>MOBILE = 0;</code>
+       */
       MOBILE(0, 0),
+      /**
+       * <code>HOME = 1;</code>
+       */
       HOME(1, 1),
+      /**
+       * <code>WORK = 2;</code>
+       */
       WORK(2, 2),
       ;
 
+      /**
+       * <code>MOBILE = 0;</code>
+       */
+      public static final int MOBILE_VALUE = 0;
+      /**
+       * <code>HOME = 1;</code>
+       */
+      public static final int HOME_VALUE = 1;
+      /**
+       * <code>WORK = 2;</code>
+       */
+      public static final int WORK_VALUE = 2;
+
 
       public final int getNumber() { return value; }
 
@@ -80,8 +261,8 @@ public final class AddressBookProtos {
           internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<PhoneType>() {
               public PhoneType findValueByNumber(int number) {
-                return PhoneType.valueOf(number)
-      ;        }
+                return PhoneType.valueOf(number);
+              }
             };
 
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
@@ -97,9 +278,8 @@ public final class AddressBookProtos {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDescriptor().getEnumTypes().get(0);
       }
 
-      private static final PhoneType[] VALUES = {
-        MOBILE, HOME, WORK,
-      };
+      private static final PhoneType[] VALUES = values();
+
       public static PhoneType valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -108,27 +288,58 @@ public final class AddressBookProtos {
         }
         return VALUES[desc.getIndex()];
       }
+
       private final int index;
       private final int value;
+
       private PhoneType(int index, int value) {
         this.index = index;
         this.value = value;
       }
 
-      static {
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.getDescriptor();
-      }
-
       // @@protoc_insertion_point(enum_scope:org.apache.camel.dataformat.protobuf.generated.Person.PhoneType)
     }
 
+    public interface PhoneNumberOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string number = 1;
+      /**
+       * <code>required string number = 1;</code>
+       */
+      boolean hasNumber();
+      /**
+       * <code>required string number = 1;</code>
+       */
+      java.lang.String getNumber();
+      /**
+       * <code>required string number = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNumberBytes();
+
+      // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType();
+    }
+    /**
+     * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber}
+     */
     public static final class PhoneNumber extends
-        com.google.protobuf.GeneratedMessage {
+        com.google.protobuf.GeneratedMessage
+        implements PhoneNumberOrBuilder {
       // Use PhoneNumber.newBuilder() to construct.
-      private PhoneNumber() {
-        initFields();
+      private PhoneNumber(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
       }
-      private PhoneNumber(boolean noInit) {}
+      private PhoneNumber(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
 
       private static final PhoneNumber defaultInstance;
       public static PhoneNumber getDefaultInstance() {
@@ -139,6 +350,63 @@ public final class AddressBookProtos {
         return defaultInstance;
       }
 
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private PhoneNumber(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                number_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                int rawValue = input.readEnum();
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(2, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
@@ -146,39 +414,111 @@ public final class AddressBookProtos {
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable;
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<PhoneNumber> PARSER =
+          new com.google.protobuf.AbstractParser<PhoneNumber>() {
+        public PhoneNumber parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new PhoneNumber(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<PhoneNumber> getParserForType() {
+        return PARSER;
       }
 
+      private int bitField0_;
       // required string number = 1;
       public static final int NUMBER_FIELD_NUMBER = 1;
-      private boolean hasNumber;
-      private java.lang.String number_ = "";
-      public boolean hasNumber() { return hasNumber; }
-      public java.lang.String getNumber() { return number_; }
+      private java.lang.Object number_;
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public java.lang.String getNumber() {
+        java.lang.Object ref = number_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            number_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string number = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNumberBytes() {
+        java.lang.Object ref = number_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          number_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
 
       // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
       public static final int TYPE_FIELD_NUMBER = 2;
-      private boolean hasType;
       private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType type_;
-      public boolean hasType() { return hasType; }
-      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() { return type_; }
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() {
+        return type_;
+      }
 
       private void initFields() {
+        number_ = "";
         type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
       }
+      private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
-        if (!hasNumber) return false;
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
         return true;
       }
 
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         getSerializedSize();
-        if (hasNumber()) {
-          output.writeString(1, getNumber());
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNumberBytes());
         }
-        if (hasType()) {
-          output.writeEnum(2, getType().getNumber());
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(2, type_.getNumber());
         }
         getUnknownFields().writeTo(output);
       }
@@ -189,84 +529,77 @@ public final class AddressBookProtos {
         if (size != -1) return size;
 
         size = 0;
-        if (hasNumber()) {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.protobuf.CodedOutputStream
-            .computeStringSize(1, getNumber());
+            .computeBytesSize(1, getNumberBytes());
         }
-        if (hasType()) {
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
           size += com.google.protobuf.CodedOutputStream
-            .computeEnumSize(2, getType().getNumber());
+            .computeEnumSize(2, type_.getNumber());
         }
         size += getUnknownFields().getSerializedSize();
         memoizedSerializedSize = size;
         return size;
       }
 
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.ByteString data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.ByteString data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(byte[] data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           byte[] data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseDelimitedFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
 
       public static Builder newBuilder() { return Builder.create(); }
@@ -276,72 +609,93 @@ public final class AddressBookProtos {
       }
       public Builder toBuilder() { return newBuilder(this); }
 
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber}
+       */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> {
-        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result;
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
+        }
 
-        // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.newBuilder()
-        private Builder() {}
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder.class);
+        }
 
-        private static Builder create() {
-          Builder builder = new Builder();
-          builder.result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber();
-          return builder;
+        // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
         }
 
-        protected org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber internalGetResult() {
-          return result;
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
         }
 
         public Builder clear() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "Cannot call clear() after build().");
-          }
-          result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber();
+          super.clear();
+          number_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
 
         public Builder clone() {
-          return create().mergeFrom(result);
+          return create().mergeFrom(buildPartial());
         }
 
         public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDescriptor();
+          return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_PhoneNumber_descriptor;
         }
 
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getDefaultInstanceForType() {
           return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance();
         }
 
-        public boolean isInitialized() {
-          return result.isInitialized();
-        }
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber build() {
-          if (result != null && !isInitialized()) {
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result = buildPartial();
+          if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
           }
-          return buildPartial();
-        }
-
-        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber buildParsed()
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          if (!isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return buildPartial();
+          return result;
         }
 
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber buildPartial() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "build() has already been called on this Builder.");
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.number_ = number_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
           }
-          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber returnMe = result;
-          result = null;
-          return returnMe;
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
         }
 
         public Builder mergeFrom(com.google.protobuf.Message other) {
@@ -356,7 +710,9 @@ public final class AddressBookProtos {
         public Builder mergeFrom(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber other) {
           if (other == org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance()) return this;
           if (other.hasNumber()) {
-            setNumber(other.getNumber());
+            bitField0_ |= 0x00000001;
+            number_ = other.number_;
+            onChanged();
           }
           if (other.hasType()) {
             setType(other.getType());
@@ -365,85 +721,140 @@ public final class AddressBookProtos {
           return this;
         }
 
+        public final boolean isInitialized() {
+          if (!hasNumber()) {
+            
+            return false;
+          }
+          return true;
+        }
+
         public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                }
-                break;
-              }
-              case 10: {
-                setNumber(input.readString());
-                break;
-              }
-              case 16: {
-                int rawValue = input.readEnum();
-                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.valueOf(rawValue);
-                if (value == null) {
-                  unknownFields.mergeVarintField(2, rawValue);
-                } else {
-                  setType(value);
-                }
-                break;
-              }
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-
+        private int bitField0_;
 
         // required string number = 1;
+        private java.lang.Object number_ = "";
+        /**
+         * <code>required string number = 1;</code>
+         */
         public boolean hasNumber() {
-          return result.hasNumber();
+          return ((bitField0_ & 0x00000001) == 0x00000001);
         }
+        /**
+         * <code>required string number = 1;</code>
+         */
         public java.lang.String getNumber() {
-          return result.getNumber();
+          java.lang.Object ref = number_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            number_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
         }
-        public Builder setNumber(java.lang.String value) {
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNumberBytes() {
+          java.lang.Object ref = number_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            number_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public Builder setNumber(
+            java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
-  result.hasNumber = true;
-          result.number_ = value;
+  bitField0_ |= 0x00000001;
+          number_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>required string number = 1;</code>
+         */
         public Builder clearNumber() {
-          result.hasNumber = false;
-          result.number_ = getDefaultInstance().getNumber();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          number_ = getDefaultInstance().getNumber();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string number = 1;</code>
+         */
+        public Builder setNumberBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          number_ = value;
+          onChanged();
           return this;
         }
 
         // optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];
+        private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public boolean hasType() {
-          return result.hasType();
+          return ((bitField0_ & 0x00000002) == 0x00000002);
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType getType() {
-          return result.getType();
+          return type_;
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public Builder setType(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType value) {
           if (value == null) {
             throw new NullPointerException();
           }
-          result.hasType = true;
-          result.type_ = value;
+          bitField0_ |= 0x00000002;
+          type_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>optional .org.apache.camel.dataformat.protobuf.generated.Person.PhoneType type = 2 [default = HOME];</code>
+         */
         public Builder clearType() {
-          result.hasType = false;
-          result.type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          type_ = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneType.HOME;
+          onChanged();
           return this;
         }
 
@@ -452,71 +863,194 @@ public final class AddressBookProtos {
 
       static {
         defaultInstance = new PhoneNumber(true);
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internalForceInit();
         defaultInstance.initFields();
       }
 
       // @@protoc_insertion_point(class_scope:org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber)
     }
 
+    private int bitField0_;
     // required string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
-    private boolean hasName;
-    private java.lang.String name_ = "";
-    public boolean hasName() { return hasName; }
-    public java.lang.String getName() { return name_; }
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
 
     // required int32 id = 2;
     public static final int ID_FIELD_NUMBER = 2;
-    private boolean hasId;
-    private int id_ = 0;
-    public boolean hasId() { return hasId; }
-    public int getId() { return id_; }
+    private int id_;
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required int32 id = 2;</code>
+     */
+    public int getId() {
+      return id_;
+    }
 
     // optional string email = 3;
     public static final int EMAIL_FIELD_NUMBER = 3;
-    private boolean hasEmail;
-    private java.lang.String email_ = "";
-    public boolean hasEmail() { return hasEmail; }
-    public java.lang.String getEmail() { return email_; }
+    private java.lang.Object email_;
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public boolean hasEmail() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public java.lang.String getEmail() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          email_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string email = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEmailBytes() {
+      java.lang.Object ref = email_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        email_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
 
     // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
     public static final int PHONE_FIELD_NUMBER = 4;
-    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_ =
-      java.util.Collections.emptyList();
+    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
     public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> getPhoneList() {
       return phone_;
     }
-    public int getPhoneCount() { return phone_.size(); }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+        getPhoneOrBuilderList() {
+      return phone_;
+    }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public int getPhoneCount() {
+      return phone_.size();
+    }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
     public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index) {
       return phone_.get(index);
     }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+     */
+    public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+        int index) {
+      return phone_.get(index);
+    }
 
     private void initFields() {
+      name_ = "";
+      id_ = 0;
+      email_ = "";
+      phone_ = java.util.Collections.emptyList();
     }
+    private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
-      if (!hasName) return false;
-      if (!hasId) return false;
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
-        if (!element.isInitialized()) return false;
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getPhoneCount(); i++) {
+        if (!getPhone(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
       }
+      memoizedIsInitialized = 1;
       return true;
     }
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
-      if (hasName()) {
-        output.writeString(1, getName());
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
       }
-      if (hasId()) {
-        output.writeInt32(2, getId());
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(2, id_);
       }
-      if (hasEmail()) {
-        output.writeString(3, getEmail());
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEmailBytes());
       }
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
-        output.writeMessage(4, element);
+      for (int i = 0; i < phone_.size(); i++) {
+        output.writeMessage(4, phone_.get(i));
       }
       getUnknownFields().writeTo(output);
     }
@@ -527,92 +1061,85 @@ public final class AddressBookProtos {
       if (size != -1) return size;
 
       size = 0;
-      if (hasName()) {
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeStringSize(1, getName());
+          .computeBytesSize(1, getNameBytes());
       }
-      if (hasId()) {
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(2, getId());
+          .computeInt32Size(2, id_);
       }
-      if (hasEmail()) {
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeStringSize(3, getEmail());
+          .computeBytesSize(3, getEmailBytes());
       }
-      for (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber element : getPhoneList()) {
+      for (int i = 0; i < phone_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, element);
+          .computeMessageSize(4, phone_.get(i));
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
 
     public static Builder newBuilder() { return Builder.create(); }
@@ -622,76 +1149,115 @@ public final class AddressBookProtos {
     }
     public Builder toBuilder() { return newBuilder(this); }
 
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.Person}
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> {
-      private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result;
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
+      }
 
-      // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.newBuilder()
-      private Builder() {}
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.Builder.class);
+      }
 
-      private static Builder create() {
-        Builder builder = new Builder();
-        builder.result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person();
-        return builder;
+      // Construct using org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
 
-      protected org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person internalGetResult() {
-        return result;
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPhoneFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
       }
 
       public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        email_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (phoneBuilder_ == null) {
+          phone_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          phoneBuilder_.clear();
         }
-        result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person();
         return this;
       }
 
       public Builder clone() {
-        return create().mergeFrom(result);
+        return create().mergeFrom(buildPartial());
       }
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDescriptor();
+        return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_Person_descriptor;
       }
 
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person getDefaultInstanceForType() {
         return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDefaultInstance();
       }
 
-      public boolean isInitialized() {
-        return result.isInitialized();
-      }
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person build() {
-        if (result != null && !isInitialized()) {
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result = buildPartial();
+        if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
-        return buildPartial();
-      }
-
-      private org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        if (!isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return buildPartial();
+        return result;
       }
 
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person buildPartial() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "build() has already been called on this Builder.");
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person result = new org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
         }
-        if (!result.phone_.isEmpty()) {
-          result.phone_ =
-            java.util.Collections.unmodifiableList(result.phone_);
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
         }
-        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person returnMe = result;
-        result = null;
-        return returnMe;
+        result.email_ = email_;
+        if (phoneBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            phone_ = java.util.Collections.unmodifiableList(phone_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.phone_ = phone_;
+        } else {
+          result.phone_ = phoneBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
@@ -706,198 +1272,557 @@ public final class AddressBookProtos {
       public Builder mergeFrom(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person other) {
         if (other == org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.getDefaultInstance()) return this;
         if (other.hasName()) {
-          setName(other.getName());
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
         }
         if (other.hasId()) {
           setId(other.getId());
         }
         if (other.hasEmail()) {
-          setEmail(other.getEmail());
+          bitField0_ |= 0x00000004;
+          email_ = other.email_;
+          onChanged();
         }
-        if (!other.phone_.isEmpty()) {
-          if (result.phone_.isEmpty()) {
-            result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        if (phoneBuilder_ == null) {
+          if (!other.phone_.isEmpty()) {
+            if (phone_.isEmpty()) {
+              phone_ = other.phone_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensurePhoneIsMutable();
+              phone_.addAll(other.phone_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.phone_.isEmpty()) {
+            if (phoneBuilder_.isEmpty()) {
+              phoneBuilder_.dispose();
+              phoneBuilder_ = null;
+              phone_ = other.phone_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              phoneBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPhoneFieldBuilder() : null;
+            } else {
+              phoneBuilder_.addAllMessages(other.phone_);
+            }
           }
-          result.phone_.addAll(other.phone_);
         }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
 
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasId()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getPhoneCount(); i++) {
+          if (!getPhone(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              }
-              break;
-            }
-            case 10: {
-              setName(input.readString());
-              break;
-            }
-            case 16: {
-              setId(input.readInt32());
-              break;
-            }
-            case 26: {
-              setEmail(input.readString());
-              break;
-            }
-            case 34: {
-              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder subBuilder = org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.newBuilder();
-              input.readMessage(subBuilder, extensionRegistry);
-              addPhone(subBuilder.buildPartial());
-              break;
-            }
+        org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-
+      private int bitField0_;
 
       // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
       public boolean hasName() {
-        return result.hasName();
+        return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required string name = 1;</code>
+       */
       public java.lang.String getName() {
-        return result.getName();
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-      public Builder setName(java.lang.String value) {
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasName = true;
-        result.name_ = value;
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required string name = 1;</code>
+       */
       public Builder clearName() {
-        result.hasName = false;
-        result.name_ = getDefaultInstance().getName();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
         return this;
       }
 
       // required int32 id = 2;
+      private int id_ ;
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public boolean hasId() {
-        return result.hasId();
+        return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public int getId() {
-        return result.getId();
+        return id_;
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public Builder setId(int value) {
-        result.hasId = true;
-        result.id_ = value;
+        bitField0_ |= 0x00000002;
+        id_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required int32 id = 2;</code>
+       */
       public Builder clearId() {
-        result.hasId = false;
-        result.id_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        id_ = 0;
+        onChanged();
         return this;
       }
 
       // optional string email = 3;
+      private java.lang.Object email_ = "";
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public boolean hasEmail() {
-        return result.hasEmail();
+        return ((bitField0_ & 0x00000004) == 0x00000004);
       }
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public java.lang.String getEmail() {
-        return result.getEmail();
+        java.lang.Object ref = email_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          email_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-      public Builder setEmail(java.lang.String value) {
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEmailBytes() {
+        java.lang.Object ref = email_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          email_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmail(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasEmail = true;
-        result.email_ = value;
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>optional string email = 3;</code>
+       */
       public Builder clearEmail() {
-        result.hasEmail = false;
-        result.email_ = getDefaultInstance().getEmail();
+        bitField0_ = (bitField0_ & ~0x00000004);
+        email_ = getDefaultInstance().getEmail();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string email = 3;</code>
+       */
+      public Builder setEmailBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        email_ = value;
+        onChanged();
         return this;
       }
 
       // repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;
+      private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> phone_ =
+        java.util.Collections.emptyList();
+      private void ensurePhoneIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>(phone_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> phoneBuilder_;
+
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> getPhoneList() {
-        return java.util.Collections.unmodifiableList(result.phone_);
+        if (phoneBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(phone_);
+        } else {
+          return phoneBuilder_.getMessageList();
+        }
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public int getPhoneCount() {
-        return result.getPhoneCount();
+        if (phoneBuilder_ == null) {
+          return phone_.size();
+        } else {
+          return phoneBuilder_.getCount();
+        }
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber getPhone(int index) {
-        return result.getPhone(index);
+        if (phoneBuilder_ == null) {
+          return phone_.get(index);
+        } else {
+          return phoneBuilder_.getMessage(index);
+        }
       }
-      public Builder setPhone(int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
-        if (value == null) {
-          throw new NullPointerException();
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder setPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.set(index, value);
+          onChanged();
+        } else {
+          phoneBuilder_.setMessage(index, value);
         }
-        result.phone_.set(index, value);
         return this;
       }
-      public Builder setPhone(int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
-        result.phone_.set(index, builderForValue.build());
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder setPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.setMessage(index, builderForValue.build());
+        }
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder addPhone(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
-        if (value == null) {
-          throw new NullPointerException();
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.add(value);
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(value);
         }
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber value) {
+        if (phoneBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePhoneIsMutable();
+          phone_.add(index, value);
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.add(builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(builderForValue.build());
         }
-        result.phone_.add(value);
         return this;
       }
-      public Builder addPhone(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder addPhone(
+          int index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder builderForValue) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          phoneBuilder_.addMessage(index, builderForValue.build());
         }
-        result.phone_.add(builderForValue.build());
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder addAllPhone(
           java.lang.Iterable<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber> values) {
-        if (result.phone_.isEmpty()) {
-          result.phone_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber>();
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          super.addAll(values, phone_);
+          onChanged();
+        } else {
+          phoneBuilder_.addAllMessages(values);
         }
-        super.addAll(values, result.phone_);
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
       public Builder clearPhone() {
-        result.phone_ = java.util.Collections.emptyList();
+        if (phoneBuilder_ == null) {
+          phone_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          phoneBuilder_.clear();
+        }
         return this;
       }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public Builder removePhone(int index) {
+        if (phoneBuilder_ == null) {
+          ensurePhoneIsMutable();
+          phone_.remove(index);
+          onChanged();
+        } else {
+          phoneBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder getPhoneBuilder(
+          int index) {
+        return getPhoneFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder getPhoneOrBuilder(
+          int index) {
+        if (phoneBuilder_ == null) {
+          return phone_.get(index);  } else {
+          return phoneBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+           getPhoneOrBuilderList() {
+        if (phoneBuilder_ != null) {
+          return phoneBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(phone_);
+        }
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder addPhoneBuilder() {
+        return getPhoneFieldBuilder().addBuilder(
+            org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder addPhoneBuilder(
+          int index) {
+        return getPhoneFieldBuilder().addBuilder(
+            index, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person.PhoneNumber phone = 4;</code>
+       */
+      public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder> 
+           getPhoneBuilderList() {
+        return getPhoneFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder> 
+          getPhoneFieldBuilder() {
+        if (phoneBuilder_ == null) {
+          phoneBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumber.Builder, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PhoneNumberOrBuilder>(
+                  phone_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          phone_ = null;
+        }
+        return phoneBuilder_;
+      }
 
       // @@protoc_insertion_point(builder_scope:org.apache.camel.dataformat.protobuf.generated.Person)
     }
 
     static {
       defaultInstance = new Person(true);
-      org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internalForceInit();
       defaultInstance.initFields();
     }
 
     // @@protoc_insertion_point(class_scope:org.apache.camel.dataformat.protobuf.generated.Person)
   }
 
+  public interface AddressBookOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person> 
+        getPersonList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person getPerson(int index);
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    int getPersonCount();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    java.util.List<? extends org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder> 
+        getPersonOrBuilderList();
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
+    org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.PersonOrBuilder getPersonOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code org.apache.camel.dataformat.protobuf.generated.AddressBook}
+   */
   public static final class AddressBook extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements AddressBookOrBuilder {
     // Use AddressBook.newBuilder() to construct.
-    private AddressBook() {
-      initFields();
+    private AddressBook(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private AddressBook(boolean noInit) {}
+    private AddressBook(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
 
     private static final AddressBook defaultInstance;
     public static AddressBook getDefaultInstance() {
@@ -908,6 +1833,58 @@ public final class AddressBookProtos {
       return defaultInstance;
     }
 
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AddressBook(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                person_ = new java.util.ArrayList<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              person_.add(input.readMessage(org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          person_ = java.util.Collections.unmodifiableList(person_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_AddressBook_descriptor;
@@ -915,35 +1892,85 @@ public final class AddressBookProtos {
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_AddressBook_fieldAccessorTable;
+      return org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.internal_static_org_apache_camel_dataformat_protobuf_generated_AddressBook_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.AddressBook.class, org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.AddressBook.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<AddressBook> PARSER =
+        new com.google.protobuf.AbstractParser<AddressBook>() {
+      public AddressBook parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new AddressBook(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<AddressBook> getParserForType() {
+      return PARSER;
     }
 
     // repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;
     public static final int PERSON_FIELD_NUMBER = 1;
-    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person> person_ =
-      java.util.Collections.emptyList();
+    private java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person> person_;
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.generated.Person person = 1;</code>
+     */
     public java.util.List<org.apache.camel.dataformat.protobuf.generated.AddressBookProtos.Person> getPersonList() {
       return person_;
     }
-    public int getPersonCount() { return person_.size(); }
+    /**
+     * <code>repeated .org.apache.camel.dataformat.protobuf.g

<TRUNCATED>

[05/12] git commit: Upgrade zookeeper to 3.4.6

Posted by ni...@apache.org.
Upgrade zookeeper to 3.4.6


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6cec847f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6cec847f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6cec847f

Branch: refs/heads/camel-2.13.x
Commit: 6cec847f563a10fd50695e4da3b183789ecd002a
Parents: 4619150
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 16 20:05:14 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:25 2014 +0800

----------------------------------------------------------------------
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6cec847f/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index d06c12a..9cd06e3 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -446,7 +446,7 @@
     <xstream-version>1.4.7</xstream-version>
     <xom-version>1.2.5</xom-version>
     <yammer-metrics-version>2.2.0</yammer-metrics-version>
-    <zookeeper-version>3.4.5</zookeeper-version>
+    <zookeeper-version>3.4.6</zookeeper-version>
 
     <!-- OSGi bundles properties -->
     <camel.osgi.import.camel.version>version="[$(version;==;${camel.osgi.version.clean}),$(version;=+;${camel.osgi.version.clean}))"</camel.osgi.import.camel.version>


[12/12] git commit: CAMEL-7289: Upgraded to mqtt client 1.10

Posted by ni...@apache.org.
CAMEL-7289: Upgraded to mqtt client 1.10


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f9a59665
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f9a59665
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f9a59665

Branch: refs/heads/camel-2.13.x
Commit: f9a59665717333f674668f3daffe8b64d27b8cf8
Parents: 9295088
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 17 09:31:03 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:05:32 2014 +0800

----------------------------------------------------------------------
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f9a59665/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 219f21e..58e1228 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -303,7 +303,7 @@
     <mock-javamail-version>1.7</mock-javamail-version>
     <mockito-version>1.9.5</mockito-version>
     <mongo-java-driver-version>2.11.4</mongo-java-driver-version>
-    <mqtt-client-version>1.8</mqtt-client-version>
+    <mqtt-client-version>1.10</mqtt-client-version>
     <msv-version>20050913</msv-version>
     <mustache-java-version>0.8.13</mustache-java-version>
     <mustache-bundle-version>0.8.13_1/</mustache-bundle-version>


[09/12] git commit: Upgrade to SSHD 0.10.1 and provided a temporary workaround because of http://sourceforge.net/p/jsch/bugs/63

Posted by ni...@apache.org.
Upgrade to SSHD 0.10.1 and provided a temporary workaround because of http://sourceforge.net/p/jsch/bugs/63


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/af9e3898
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/af9e3898
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/af9e3898

Branch: refs/heads/camel-2.13.x
Commit: af9e3898508ef838274d44117b2be33b5956fe57
Parents: 7516fdb
Author: Babak Vahdat <bv...@apache.org>
Authored: Sun Mar 16 21:51:16 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Mar 17 17:04:59 2014 +0800

----------------------------------------------------------------------
 .../org/apache/camel/component/jsch/ScpServerTestSupport.java   | 5 ++++-
 .../org/apache/camel/component/ssh/FileKeyPairProvider.java     | 5 +++--
 .../camel/component/ssh/ResourceHelperKeyPairProvider.java      | 4 ++--
 parent/pom.xml                                                  | 2 +-
 4 files changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/af9e3898/components/camel-jsch/src/test/java/org/apache/camel/component/jsch/ScpServerTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-jsch/src/test/java/org/apache/camel/component/jsch/ScpServerTestSupport.java b/components/camel-jsch/src/test/java/org/apache/camel/component/jsch/ScpServerTestSupport.java
index 8d56ff1..1213e9d 100644
--- a/components/camel-jsch/src/test/java/org/apache/camel/component/jsch/ScpServerTestSupport.java
+++ b/components/camel-jsch/src/test/java/org/apache/camel/component/jsch/ScpServerTestSupport.java
@@ -178,7 +178,10 @@ public abstract class ScpServerTestSupport extends CamelTestSupport {
             jsch.setKnownHosts(knownHostsFile);
             Session s = jsch.getSession("admin", "localhost", getPort());
             s.setConfig("StrictHostKeyChecking",  "ask");
-            s.setConfig("HashKnownHosts",  "yes");
+
+            // TODO: by the current jsch (0.1.50) setting "HashKnownHosts" to "no" is a workaround
+            // to make the tests run green, see also http://sourceforge.net/p/jsch/bugs/63/
+            s.setConfig("HashKnownHosts",  "no");
             s.setUserInfo(new UserInfo() {
                 @Override
                 public String getPassphrase() {

http://git-wip-us.apache.org/repos/asf/camel/blob/af9e3898/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/FileKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/FileKeyPairProvider.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/FileKeyPairProvider.java
index 02a2f00..6ed9b9b 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/FileKeyPairProvider.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/FileKeyPairProvider.java
@@ -73,7 +73,8 @@ public class FileKeyPairProvider extends AbstractKeyPairProvider {
         this.passwordFinder = passwordFinder;
     }
 
-    public KeyPair[] loadKeys() {
+    @Override
+    public Iterable<KeyPair> loadKeys() {
         if (!SecurityUtils.isBouncyCastleRegistered()) {
             throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
         }
@@ -106,7 +107,7 @@ public class FileKeyPairProvider extends AbstractKeyPairProvider {
                 log.warn("Unable to read key {}: {}", files[i], e);
             }
         }
-        return keys.toArray(new KeyPair[keys.size()]);
+        return keys;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/af9e3898/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
index 9457b05..0116e3d 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
@@ -95,7 +95,7 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
     }
 
     @Override
-    protected KeyPair[] loadKeys() {
+    public Iterable<KeyPair> loadKeys() {
         if (!SecurityUtils.isBouncyCastleRegistered()) {
             throw new IllegalStateException("BouncyCastle must be registered as a JCE provider");
         }
@@ -136,7 +136,7 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
             }
         }
 
-        return keys.toArray(new KeyPair[keys.size()]);
+        return keys;
     }
     
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/af9e3898/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 9cd06e3..219f21e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -391,7 +391,7 @@
     <spring-ws-version>2.1.4.RELEASE</spring-ws-version>
     <spymemcached-bundle-version>2.5_2</spymemcached-bundle-version> <!-- FIXME cmueller: not in sync! -->
     <spymemcached-version>2.8.4</spymemcached-version>
-    <sshd-version>0.9.0</sshd-version>
+    <sshd-version>0.10.1</sshd-version>
     <stompjms-version>1.19</stompjms-version>
     <stax-api-version>1.0.1</stax-api-version>
     <stax2-api-bundle-version>3.1.1</stax2-api-bundle-version>