You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/09/24 13:36:14 UTC

[1/8] camel git commit: Polished

Repository: camel
Updated Branches:
  refs/heads/master 3ba805987 -> d4228467a


Polished


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

Branch: refs/heads/master
Commit: 4935c1eb334e0ee017ee1744258fa440e6a6fb5f
Parents: 3ba8059
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 11:17:49 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 11:17:49 2015 +0200

----------------------------------------------------------------------
 .../org/apache/camel/management/mbean/ManagedRestRegistry.java     | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4935c1eb/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
index cbcbcd6..3299b02 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
@@ -33,11 +33,9 @@ import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
 import org.apache.camel.api.management.mbean.ManagedRestRegistryMBean;
 import org.apache.camel.component.rest.RestApiEndpoint;
 import org.apache.camel.component.rest.RestEndpoint;
-import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestRegistry;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 
 /**
  *


[5/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: 9765d5624f2835fa51a5831334d76238f384d504
Parents: 0a991ea
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 13:20:16 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 13:20:16 2015 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/spi/DataFormat.java   |   3 +-
 .../dataformat/barcode/BarcodeDataFormat.java   | 204 +++++++------------
 .../dataformat/base64/Base64DataFormat.java     |  13 +-
 .../bindy/BindyAbstractDataFormat.java          |  13 +-
 .../camel/component/boon/BoonDataFormat.java    |  14 +-
 .../converter/crypto/CryptoDataFormat.java      |  13 +-
 .../camel/dataformat/csv/CsvDataFormat.java     |  44 ++--
 .../cxf/jaxrs/DataFormatProviderTest.java       |  12 +-
 .../dataformat/flatpack/FlatpackDataFormat.java |  14 +-
 .../dataformat/AbstractXmlDataFormat.java       |  12 +-
 .../camel/component/ical/ICalDataFormat.java    |  13 +-
 .../camel/dataformat/jibx/JibxDataFormat.java   |  13 +-
 .../camel/dataformat/rss/RssDataFormat.java     |  19 +-
 .../component/syslog/SyslogDataFormat.java      |  13 +-
 .../tagsoup/TidyMarkupDataFormat.java           |  75 ++-----
 .../dataformat/tarfile/TarFileDataFormat.java   |  13 +-
 16 files changed, 254 insertions(+), 234 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java b/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
index 86ed336..ad76316 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
@@ -21,7 +21,6 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.Service;
 
 /**
  * Represents a
@@ -32,7 +31,7 @@ import org.apache.camel.Service;
  *
  * @version 
  */
-public interface DataFormat extends Service {
+public interface DataFormat {
 
     // TODO: DataFormats should extends Service like the others
 

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
index 1dd5f9b..0f6ea37 100644
--- a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
+++ b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
@@ -14,17 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.dataformat.barcode;
 
 import java.io.BufferedInputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.EnumMap;
 import java.util.Map;
-
 import javax.imageio.ImageIO;
 
 import com.google.zxing.BarcodeFormat;
@@ -34,54 +30,48 @@ import com.google.zxing.EncodeHintType;
 import com.google.zxing.MultiFormatReader;
 import com.google.zxing.MultiFormatWriter;
 import com.google.zxing.Result;
-import com.google.zxing.WriterException;
 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
 import com.google.zxing.client.j2se.MatrixToImageWriter;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.common.HybridBinarizer;
 import com.google.zxing.datamatrix.encoder.SymbolShapeHint;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
-
 import org.apache.camel.Exchange;
-import org.apache.camel.NoTypeConversionAvailableException;
-import org.apache.camel.TypeConversionException;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * {@link DataFormat} to create (encode) and 
+ * {@link DataFormat} to create (encode) and
  * read (decode) barcodes. For more info about
  * the available barcodes have a look at:<br/><br/>
- * 
+ * <p/>
  * https://github.com/zxing/zxing
- * 
  */
-public class BarcodeDataFormat implements DataFormat {
+public class BarcodeDataFormat extends ServiceSupport implements DataFormat {
 
     /**
      * Logger.
      */
     private static final Logger LOG = LoggerFactory.getLogger(BarcodeDataFormat.class);
-    
+
     /**
      * The bean for the default parameters.
      */
     private BarcodeParameters params;
-    
+
     /**
      * The encoding hint map, used for writing a barcode.
      */
-    private final Map<EncodeHintType, Object> writerHintMap = 
-            new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
-    
+    private final Map<EncodeHintType, Object> writerHintMap = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
+
     /**
      * The decoding hint map, used for reading a barcode.
      */
-    private final Map<DecodeHintType, Object> readerHintMap = 
-            new EnumMap<DecodeHintType, Object>(DecodeHintType.class);
-            
+    private final Map<DecodeHintType, Object> readerHintMap = new EnumMap<DecodeHintType, Object>(DecodeHintType.class);
+
 
     /**
      * Create instance with default parameters.
@@ -90,11 +80,11 @@ public class BarcodeDataFormat implements DataFormat {
         this.setDefaultParameters();
         this.optimizeHints();
     }
-    
+
     /**
-     * Create instance with custom {@link BarcodeFormat}. The other 
+     * Create instance with custom {@link BarcodeFormat}. The other
      * values are default.
-     * 
+     *
      * @param format the barcode format
      */
     public BarcodeDataFormat(final BarcodeFormat format) {
@@ -104,11 +94,11 @@ public class BarcodeDataFormat implements DataFormat {
     }
 
     /**
-     * Create instance with custom height and width. The other 
+     * Create instance with custom height and width. The other
      * values are default.
-     * 
+     *
      * @param height the image height
-     * @param width the image width
+     * @param width  the image width
      */
     public BarcodeDataFormat(final int width, final int height) {
         this.setDefaultParameters();
@@ -118,9 +108,9 @@ public class BarcodeDataFormat implements DataFormat {
     }
 
     /**
-     * Create instance with custom {@link BarcodeImageType}. The other 
+     * Create instance with custom {@link BarcodeImageType}. The other
      * values are default.
-     * 
+     *
      * @param type the type (format) of the image. e.g. PNG
      */
     public BarcodeDataFormat(final BarcodeImageType type) {
@@ -128,18 +118,17 @@ public class BarcodeDataFormat implements DataFormat {
         this.params.setType(type);
         this.optimizeHints();
     }
-    
+
     /**
-     * Create instance with custom height, width and image type. The other 
+     * Create instance with custom height, width and image type. The other
      * values are default.
-     * 
+     *
      * @param height the image height
-     * @param width the image width
-     * @param type the type (format) of the image. e.g. PNG
+     * @param width  the image width
+     * @param type   the type (format) of the image. e.g. PNG
      * @param format the barcode format
      */
-    public BarcodeDataFormat(final int width, final int height
-            , final BarcodeImageType type, final BarcodeFormat format) {
+    public BarcodeDataFormat(final int width, final int height, final BarcodeImageType type, final BarcodeFormat format) {
         this.setDefaultParameters();
         this.params.setHeight(height);
         this.params.setWidth(width);
@@ -147,41 +136,30 @@ public class BarcodeDataFormat implements DataFormat {
         this.params.setFormat(format);
         this.optimizeHints();
     }
-    
+
     /**
      * Marshall a {@link String} payload to a code image.
-     * 
-     * @param exchange
-     * @param graph
-     * @param stream
-     * @throws Exception 
      */
     @Override
-    public void marshal(final Exchange exchange, final Object graph
-            , final OutputStream stream) throws Exception {
+    public void marshal(final Exchange exchange, final Object graph, final OutputStream stream) throws Exception {
         this.printImage(exchange, graph, stream);
     }
 
     /**
      * Unmarshall a code image to a {@link String} payload.
-     * 
-     * @param exchange
-     * @param stream
-     * @return
-     * @throws Exception 
      */
     @Override
     public Object unmarshal(final Exchange exchange, final InputStream stream) throws Exception {
         return this.readImage(exchange, stream);
     }
-    
+
     /**
      * Sets the default parameters.
      */
     protected final void setDefaultParameters() {
         this.params = new BarcodeParameters();
     }
-    
+
     /**
      * Sets hints optimized for different barcode types.
      */
@@ -195,145 +173,102 @@ public class BarcodeDataFormat implements DataFormat {
 
         // only for QR code. AZTEC uses zxing's default error correction 33%.
         if (format.equals(BarcodeFormat.QR_CODE.toString())) {
-            this.writerHintMap
-                  .put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+            this.writerHintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
         }
 
         if (format.equals(BarcodeFormat.DATA_MATRIX.toString())) {
-            this.writerHintMap
-                    .put(EncodeHintType.DATA_MATRIX_SHAPE
-                            , SymbolShapeHint.FORCE_SQUARE);
+            this.writerHintMap.put(EncodeHintType.DATA_MATRIX_SHAPE, SymbolShapeHint.FORCE_SQUARE);
         }
-        
+
         // reader hints
         this.readerHintMap.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
     }
-    
+
     /**
      * Writes the image file to the output stream.
-     * 
-     * @param graph the object graph
+     *
+     * @param graph    the object graph
      * @param exchange the camel exchange
-     * @param stream the output stream
-     * @throws WriterException
-     * @throws UnsupportedEncodingException
-     * @throws IOException 
-     * @throws org.apache.camel.NoTypeConversionAvailableException 
+     * @param stream   the output stream
      */
-    private void printImage(final Exchange exchange, final Object graph, final OutputStream stream)
-        throws WriterException, UnsupportedEncodingException, IOException, TypeConversionException,
-        NoTypeConversionAvailableException {
-         
+    private void printImage(final Exchange exchange, final Object graph, final OutputStream stream) throws Exception {
         final String payload = ExchangeHelper
                 .convertToMandatoryType(exchange, String.class, graph);
         final MultiFormatWriter writer = new MultiFormatWriter();
 
         // set values
         final String type = this.params.getType().toString();
-        
+
         // create code image  
         final BitMatrix matrix = writer.encode(
                 payload,
-                this.params.getFormat(), 
-                this.params.getWidth(), 
-                this.params.getHeight(), 
+                this.params.getFormat(),
+                this.params.getWidth(),
+                this.params.getHeight(),
                 writerHintMap);
-        
+
         // write image back to stream
         MatrixToImageWriter.writeToStream(matrix, type, stream);
     }
-    
+
     /**
      * Reads the message from a code.
-     * 
-     * @param exchange
-     * @param stream
-     * @return
-     * @throws Exception
      */
-    private String readImage(final Exchange exchange, final InputStream stream)
-        throws Exception {
+    private String readImage(final Exchange exchange, final InputStream stream) throws Exception {
         final MultiFormatReader reader = new MultiFormatReader();
         final BufferedInputStream in = exchange.getContext()
                 .getTypeConverter()
                 .mandatoryConvertTo(BufferedInputStream.class, stream);
-        final BinaryBitmap bitmap = new BinaryBitmap(
-                new HybridBinarizer(
-                        new BufferedImageLuminanceSource(ImageIO.read(in))));
+        final BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(in))));
         final Result result = reader.decode(bitmap, readerHintMap);
-        
+
         // write the found barcode format into the header
-        exchange.getOut()
-                .setHeader(Barcode.BARCODE_FORMAT, result.getBarcodeFormat());
-        
+        exchange.getOut().setHeader(Barcode.BARCODE_FORMAT, result.getBarcodeFormat());
+
         return result.getText();
     }
-    
+
     /**
      * Adds a new hint value to writer (encode) hint map.
-     * 
-     * @param hintType
-     * @param value 
      */
-    public final void addToHintMap(final EncodeHintType hintType
-            , final Object value) {
+    public final void addToHintMap(final EncodeHintType hintType, final Object value) {
         this.writerHintMap.put(hintType, value);
-        LOG.info(
-                String.format("Added '%s' with value '%s' to writer hint map."
-                        , hintType.toString(), value.toString()));
+        LOG.info(String.format("Added '%s' with value '%s' to writer hint map.", hintType.toString(), value.toString()));
     }
-    
+
     /**
      * Adds a new hint value to reader (decode) hint map.
-     * 
-     * @param hintType
-     * @param value 
      */
-    public final void addToHintMap(final DecodeHintType hintType
-            , final Object value) {
+    public final void addToHintMap(final DecodeHintType hintType, final Object value) {
         this.readerHintMap.put(hintType, value);
     }
-    
+
     /**
      * Removes a hint from writer (encode) hint map.
-     * 
-     * @param hintType 
      */
     public final void removeFromHintMap(final EncodeHintType hintType) {
         if (this.writerHintMap.containsKey(hintType)) {
             this.writerHintMap.remove(hintType);
-            LOG.info(
-                    String.format("Removed '%s' from writer hint map."
-                            , hintType.toString()));
+            LOG.info(String.format("Removed '%s' from writer hint map.", hintType.toString()));
         } else {
-            LOG.warn(
-                    String.format("Could not find encode hint type '%s' in "
-                            + "writer hint map.", hintType.toString()));
+            LOG.warn(String.format("Could not find encode hint type '%s' in writer hint map.", hintType.toString()));
         }
     }
-    
+
     /**
      * Removes a hint from reader (decode) hint map.
-     * 
-     * @param hintType 
      */
     public final void removeFromHintMap(final DecodeHintType hintType) {
         if (this.readerHintMap.containsKey(hintType)) {
             this.readerHintMap.remove(hintType);
-            LOG.info(
-                    String.format("Removed '%s' from reader hint map."
-                            , hintType.toString()));
+            LOG.info(String.format("Removed '%s' from reader hint map.", hintType.toString()));
         } else {
-            LOG.warn(
-                    String.format("Could not find decode hint type '%s' in"
-                            + " reader hint map.", hintType.toString()));
+            LOG.warn(String.format("Could not find decode hint type '%s' in reader hint map.", hintType.toString()));
         }
     }
 
     /**
      * The (default) parameters.
-     * 
-     * @return 
      */
     public final BarcodeParameters getParams() {
         return params;
@@ -341,8 +276,6 @@ public class BarcodeDataFormat implements DataFormat {
 
     /**
      * The writer (encode) hint map.
-     * 
-     * @return 
      */
     public final Map<EncodeHintType, Object> getWriterHintMap() {
         return writerHintMap;
@@ -350,29 +283,38 @@ public class BarcodeDataFormat implements DataFormat {
 
     /**
      * The reader (decode) hint map.
-     * 
-     * @return 
      */
     public final Map<DecodeHintType, Object> getReaderHintMap() {
         return readerHintMap;
     }
-    
+
     // these set method is used for BarcodeDataFormat XML DSL
     public void setBarcodeImageType(BarcodeImageType type) {
         this.params.setType(type);
         this.optimizeHints();
     }
-    
+
     public void setBarcodeFormat(BarcodeFormat format) {
         this.params.setFormat(format);
         this.optimizeHints();
     }
-    
+
     public void setWidth(Integer width) {
         this.params.setWidth(width);
     }
-    
+
     public void setHeight(Integer height) {
         this.params.setHeight(height);
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java b/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
index fc30303..4b9ee75 100644
--- a/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
+++ b/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
@@ -21,13 +21,14 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64InputStream;
 import org.apache.commons.codec.binary.Base64OutputStream;
 
-public class Base64DataFormat implements DataFormat {
+public class Base64DataFormat extends ServiceSupport implements DataFormat {
 
     private int lineLength = Base64.MIME_CHUNK_SIZE;
     private byte[] lineSeparator = {'\r', '\n'};
@@ -91,4 +92,14 @@ public class Base64DataFormat implements DataFormat {
     public void setUrlSafe(boolean urlSafe) {
         this.urlSafe = urlSafe;
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
index a4365e3..b01e6d7 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
@@ -21,8 +21,9 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
-public abstract class BindyAbstractDataFormat implements DataFormat {
+public abstract class BindyAbstractDataFormat extends ServiceSupport implements DataFormat {
     private String locale;
     private BindyAbstractFactory modelFactory;
     private Class<?> classType;
@@ -84,4 +85,14 @@ public abstract class BindyAbstractDataFormat implements DataFormat {
             return models;
         }
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java b/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
index dfea3b1..24fbc42 100644
--- a/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
+++ b/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ChildServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.boon.json.JsonFactory;
 import org.boon.json.ObjectMapper;
@@ -36,7 +37,7 @@ import org.boon.json.ObjectMapper;
  * href="http://richardhightower.github.io/site/Boon/">Boon</a> to marshal to
  * and from JSON.
  */
-public class BoonDataFormat implements DataFormat {
+public class BoonDataFormat extends ChildServiceSupport implements DataFormat {
 
     private final ObjectMapper objectMapper;
     private Class<?> unmarshalType;
@@ -81,6 +82,16 @@ public class BoonDataFormat implements DataFormat {
         return result;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
     // Properties
     // -------------------------------------------------------------------------
 
@@ -95,4 +106,5 @@ public class BoonDataFormat implements DataFormat {
     public ObjectMapper getObjectMapper() {
         return this.objectMapper;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
index 711b3df..dd1d2c4 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
@@ -35,6 +35,7 @@ import static javax.crypto.Cipher.ENCRYPT_MODE;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
@@ -67,7 +68,7 @@ import org.slf4j.LoggerFactory;
  * <li>http://en.wikipedia.org/wiki/HMAC</li>
  * </ul>
  */
-public class CryptoDataFormat implements DataFormat {
+public class CryptoDataFormat extends ServiceSupport implements DataFormat {
 
     public static final String KEY = "CamelCryptoKey";
 
@@ -173,6 +174,16 @@ public class CryptoDataFormat implements DataFormat {
         return unmarshalled;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
     private void inlineInitVector(OutputStream outputStream, byte[] iv) throws IOException {
         if (inline) {
             if (iv == null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
index c75aa54..3437a3f 100644
--- a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
+++ b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
@@ -22,6 +22,7 @@ import java.util.Arrays;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.QuoteMode;
 
@@ -34,7 +35,7 @@ import org.apache.commons.csv.QuoteMode;
  * Autogeneration can be disabled. In this case, only the fields defined in
  * csvConfig are written on the output.
  */
-public class CsvDataFormat implements DataFormat {
+public class CsvDataFormat extends ServiceSupport implements DataFormat {
     // CSV format options
     private CSVFormat format = CSVFormat.DEFAULT;
     private boolean commentMarkerDisabled;
@@ -72,19 +73,24 @@ public class CsvDataFormat implements DataFormat {
     }
 
     public void marshal(Exchange exchange, Object object, OutputStream outputStream) throws Exception {
-        if (marshaller == null) {
-            marshaller = CsvMarshaller.create(getActiveFormat(), this);
-        }
         marshaller.marshal(exchange, object, outputStream);
     }
 
     public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
-        if (unmarshaller == null) {
-            unmarshaller = CsvUnmarshaller.create(getActiveFormat(), this);
-        }
         return unmarshaller.unmarshal(exchange, inputStream);
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        marshaller = CsvMarshaller.create(getActiveFormat(), this);
+        unmarshaller = CsvUnmarshaller.create(getActiveFormat(), this);
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
     CSVFormat getActiveFormat() {
         CSVFormat answer = format;
 
@@ -151,11 +157,6 @@ public class CsvDataFormat implements DataFormat {
         return answer;
     }
 
-    private void reset() {
-        marshaller = null;
-        unmarshaller = null;
-    }
-
     //region Getters/Setters
 
     /**
@@ -179,7 +180,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setFormat(CSVFormat format) {
         this.format = (format == null) ? CSVFormat.DEFAULT : format;
-        reset();
         return this;
     }
 
@@ -228,7 +228,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setCommentMarkerDisabled(boolean commentMarkerDisabled) {
         this.commentMarkerDisabled = commentMarkerDisabled;
-        reset();
         return this;
     }
 
@@ -252,7 +251,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setCommentMarker(Character commentMarker) {
         this.commentMarker = commentMarker;
-        reset();
         return this;
     }
 
@@ -276,7 +274,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setDelimiter(Character delimiter) {
         this.delimiter = delimiter;
-        reset();
         return this;
     }
 
@@ -298,7 +295,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setEscapeDisabled(boolean escapeDisabled) {
         this.escapeDisabled = escapeDisabled;
-        reset();
         return this;
     }
 
@@ -322,7 +318,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setEscape(Character escape) {
         this.escape = escape;
-        reset();
         return this;
     }
 
@@ -344,7 +339,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setHeaderDisabled(boolean headerDisabled) {
         this.headerDisabled = headerDisabled;
-        reset();
         return this;
     }
 
@@ -368,7 +362,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setHeader(String[] header) {
         this.header = Arrays.copyOf(header, header.length);
-        reset();
         return this;
     }
 
@@ -392,7 +385,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setAllowMissingColumnNames(Boolean allowMissingColumnNames) {
         this.allowMissingColumnNames = allowMissingColumnNames;
-        reset();
         return this;
     }
 
@@ -416,7 +408,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setIgnoreEmptyLines(Boolean ignoreEmptyLines) {
         this.ignoreEmptyLines = ignoreEmptyLines;
-        reset();
         return this;
     }
 
@@ -440,7 +431,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setIgnoreSurroundingSpaces(Boolean ignoreSurroundingSpaces) {
         this.ignoreSurroundingSpaces = ignoreSurroundingSpaces;
-        reset();
         return this;
     }
 
@@ -462,7 +452,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setNullStringDisabled(boolean nullStringDisabled) {
         this.nullStringDisabled = nullStringDisabled;
-        reset();
         return this;
     }
 
@@ -486,7 +475,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setNullString(String nullString) {
         this.nullString = nullString;
-        reset();
         return this;
     }
 
@@ -508,7 +496,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setQuoteDisabled(boolean quoteDisabled) {
         this.quoteDisabled = quoteDisabled;
-        reset();
         return this;
     }
 
@@ -532,7 +519,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setQuote(Character quote) {
         this.quote = quote;
-        reset();
         return this;
     }
 
@@ -556,7 +542,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setQuoteMode(QuoteMode quoteMode) {
         this.quoteMode = quoteMode;
-        reset();
         return this;
     }
 
@@ -578,7 +563,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setRecordSeparatorDisabled(boolean recordSeparatorDisabled) {
         this.recordSeparatorDisabled = recordSeparatorDisabled;
-        reset();
         return this;
     }
 
@@ -602,7 +586,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setRecordSeparator(String recordSeparator) {
         this.recordSeparator = recordSeparator;
-        reset();
         return this;
     }
 
@@ -626,7 +609,6 @@ public class CsvDataFormat implements DataFormat {
      */
     public CsvDataFormat setSkipHeaderRecord(Boolean skipHeaderRecord) {
         this.skipHeaderRecord = skipHeaderRecord;
-        reset();
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DataFormatProviderTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DataFormatProviderTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DataFormatProviderTest.java
index b369448..dcdb23e 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DataFormatProviderTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/DataFormatProviderTest.java
@@ -27,6 +27,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.impl.MetadataMap;
 import org.junit.Assert;
@@ -112,7 +113,7 @@ public class DataFormatProviderTest extends Assert {
         }
     }
 
-    private static class TestDataFormat implements DataFormat {
+    private static class TestDataFormat extends ServiceSupport implements DataFormat {
 
         @Override
         public void marshal(Exchange ex, Object obj, OutputStream os) throws Exception {
@@ -125,6 +126,15 @@ public class DataFormatProviderTest extends Assert {
             return new Book(IOUtils.readStringFromStream(is));
         }
 
+        @Override
+        protected void doStart() throws Exception {
+            // noop
+        }
+
+        @Override
+        protected void doStop() throws Exception {
+            // noop
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java b/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
index c8f0e46..a2bb9bc 100644
--- a/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
+++ b/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
@@ -36,6 +36,7 @@ import net.sf.flatpack.writer.Writer;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.flatpack.DataSetList;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
@@ -55,7 +56,7 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public class FlatpackDataFormat implements DataFormat {
+public class FlatpackDataFormat extends ServiceSupport implements DataFormat {
     private static final Logger LOG = LoggerFactory.getLogger(FlatpackDataFormat.class);
     private ParserFactory parserFactory = DefaultParserFactory.getInstance();
     private char delimiter = ',';
@@ -110,6 +111,17 @@ public class FlatpackDataFormat implements DataFormat {
         }
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+
+    }
+
     // Properties
     //-------------------------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-groovy/src/main/java/org/apache/camel/groovy/dataformat/AbstractXmlDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-groovy/src/main/java/org/apache/camel/groovy/dataformat/AbstractXmlDataFormat.java b/components/camel-groovy/src/main/java/org/apache/camel/groovy/dataformat/AbstractXmlDataFormat.java
index 428615d..8ec6087 100644
--- a/components/camel-groovy/src/main/java/org/apache/camel/groovy/dataformat/AbstractXmlDataFormat.java
+++ b/components/camel-groovy/src/main/java/org/apache/camel/groovy/dataformat/AbstractXmlDataFormat.java
@@ -19,6 +19,7 @@ package org.apache.camel.groovy.dataformat;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.apache.camel.support.ServiceSupport;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -31,7 +32,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Common attributes and methods for XmlParser and XmlSlurper usage.
  */
-public abstract class AbstractXmlDataFormat implements DataFormat {
+public abstract class AbstractXmlDataFormat extends ServiceSupport implements DataFormat {
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractXmlDataFormat.class);
     private static final ErrorHandler DEFAULT_HANDLER = new DefaultErrorHandler();
@@ -90,4 +91,13 @@ public abstract class AbstractXmlDataFormat implements DataFormat {
 
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
index 0448c74..1db789b 100644
--- a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
+++ b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
@@ -25,11 +25,12 @@ import net.fortuna.ical4j.model.Calendar;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
 /**
  * Bridge ICal data format to camel world.
  */
-public class ICalDataFormat implements DataFormat {
+public class ICalDataFormat extends ServiceSupport implements DataFormat {
 
     /**
      * Class responsible for writing out calendar instances.
@@ -72,4 +73,14 @@ public class ICalDataFormat implements DataFormat {
         return builder.build(stream);
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java b/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
index 3ba125f..2727a89 100644
--- a/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
+++ b/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
@@ -21,6 +21,7 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.jibx.runtime.BindingDirectory;
 import org.jibx.runtime.IBindingFactory;
@@ -28,7 +29,7 @@ import org.jibx.runtime.IMarshallingContext;
 import org.jibx.runtime.IUnmarshallingContext;
 import org.jibx.runtime.JiBXException;
 
-public class JibxDataFormat implements DataFormat {
+public class JibxDataFormat extends ServiceSupport implements DataFormat {
     private Class<?> unmarshallClass;
     private String bindingName;
 
@@ -57,6 +58,16 @@ public class JibxDataFormat implements DataFormat {
         return unmarshallingContext.unmarshalDocument(stream, null);
     }
 
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
     public Class<?> getUnmarshallClass() {
         return unmarshallClass;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-rss/src/main/java/org/apache/camel/dataformat/rss/RssDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-rss/src/main/java/org/apache/camel/dataformat/rss/RssDataFormat.java b/components/camel-rss/src/main/java/org/apache/camel/dataformat/rss/RssDataFormat.java
index 4e7688a..f74666e 100644
--- a/components/camel-rss/src/main/java/org/apache/camel/dataformat/rss/RssDataFormat.java
+++ b/components/camel-rss/src/main/java/org/apache/camel/dataformat/rss/RssDataFormat.java
@@ -22,6 +22,7 @@ import java.io.OutputStream;
 import com.sun.syndication.feed.synd.SyndFeed;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,21 +39,27 @@ import org.slf4j.LoggerFactory;
  * Uses <a href="https://rome.dev.java.net/">ROME</a> for RSS parsing.
  * <p/>
  */
-public class RssDataFormat implements DataFormat {
+public class RssDataFormat extends ServiceSupport implements DataFormat {
     protected static final Logger LOG = LoggerFactory.getLogger(RssDataFormat.class);
     
     public void marshal(Exchange exchange, Object body, OutputStream out) throws Exception {
         SyndFeed feed = ExchangeHelper.convertToMandatoryType(exchange, SyndFeed.class, body);        
         String xml = RssConverter.feedToXml(feed);            
-        if (xml != null) {
-            out.write(xml.getBytes());
-        } else {
-            LOG.debug("Cannot marshal RSS feed to XML.");
-        }
+        out.write(xml.getBytes());
     }
 
     public Object unmarshal(Exchange exchange, InputStream in) throws Exception {
         String xml = ExchangeHelper.convertToMandatoryType(exchange, String.class, in);
         return RssConverter.xmlToFeed(xml);
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogDataFormat.java b/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogDataFormat.java
index 399d8ab..84860cb 100644
--- a/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogDataFormat.java
+++ b/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogDataFormat.java
@@ -22,9 +22,10 @@ import java.util.Date;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 
-public class SyslogDataFormat implements DataFormat {
+public class SyslogDataFormat extends ServiceSupport implements DataFormat {
 
     @Override
     public void marshal(Exchange exchange, Object body, OutputStream stream) throws Exception {
@@ -71,4 +72,14 @@ public class SyslogDataFormat implements DataFormat {
 
         return message;
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java b/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
index 546607f..e5a8250 100644
--- a/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
+++ b/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
@@ -28,6 +28,7 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.sax.SAXSource;
 
+import org.apache.camel.support.ServiceSupport;
 import org.w3c.dom.Node;
 
 import org.xml.sax.ContentHandler;
@@ -45,7 +46,6 @@ import org.ccil.cowan.tagsoup.XMLWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 /**
  * Dataformat for TidyMarkup (aka Well formed HTML in XML form.. may or may not
  * be XHTML) This dataformat is intended to convert bad HTML from a site (or
@@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory;
  * xpath'ed on.
  * 
  */
-public class TidyMarkupDataFormat implements DataFormat {
+public class TidyMarkupDataFormat extends ServiceSupport implements DataFormat {
 
     /*
      * Our Logger
@@ -114,8 +114,6 @@ public class TidyMarkupDataFormat implements DataFormat {
 
     /**
      * Unmarshal the data
-     * 
-     * @throws Exception
      */
     public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
 
@@ -184,9 +182,6 @@ public class TidyMarkupDataFormat implements DataFormat {
 
     /**
      * Create the tagSoup Parser
-     * 
-     * @return
-     * @throws CamelException
      */
     protected XMLReader createTagSoupParser() throws CamelException {
         XMLReader reader = new Parser();
@@ -230,24 +225,6 @@ public class TidyMarkupDataFormat implements DataFormat {
         return reader;
     }
 
-    /**
-     * @param htmlSchema
-     *            the htmlSchema to set
-     */
-    public void setParsingSchema(Schema schema) {
-        this.parsingSchema = schema;
-    }
-
-    /**
-     * @return the htmlSchema
-     */
-    public Schema getParsingSchema() {
-        if (parsingSchema == null) {
-            this.parsingSchema = new HTMLSchema();
-        }
-        return parsingSchema;
-    }
-
     protected ContentHandler createContentHandler(Writer w) {
         XMLWriter xmlWriter = new XMLWriter(w);
 
@@ -268,64 +245,56 @@ public class TidyMarkupDataFormat implements DataFormat {
 
     }
 
-    /**
-     * @param parserFeatures
-     *            the parserFeatures to set
-     */
+    public void setParsingSchema(Schema schema) {
+        this.parsingSchema = schema;
+    }
+
+    public Schema getParsingSchema() {
+        if (parsingSchema == null) {
+            this.parsingSchema = new HTMLSchema();
+        }
+        return parsingSchema;
+    }
+
     public void setParserFeatures(Map<String, Boolean> parserFeatures) {
         this.parserFeatures = parserFeatures;
     }
 
-    /**
-     * @return the parserFeatures
-     */
     public Map<String, Boolean> getParserFeatures() {
         return parserFeatures;
     }
 
-    /**
-     * @param parserPropeties
-     *            the parserPropeties to set
-     */
     public void setParserPropeties(Map<String, Object> parserPropeties) {
         this.parserPropeties = parserPropeties;
     }
 
-    /**
-     * @return the parserPropeties
-     */
     public Map<String, Object> getParserPropeties() {
         return parserPropeties;
     }
 
-    /**
-     * @param method
-     *            the method to set
-     */
     public void setMethod(String method) {
         this.method = method;
     }
 
-    /**
-     * @return the method
-     */
     public String getMethod() {
         return method;
     }
 
-    /**
-     * @return the dataObjectType
-     */
     public Class<?> getDataObjectType() {
         return dataObjectType;
     }
 
-    /**
-     * @param dataObjectType
-     *            the dataObjectType to set
-     */
     public void setDataObjectType(Class<?> dataObjectType) {
         this.dataObjectType = dataObjectType;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/9765d562/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarFileDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarFileDataFormat.java b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarFileDataFormat.java
index 754d932..d994cf2 100644
--- a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarFileDataFormat.java
+++ b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarFileDataFormat.java
@@ -24,6 +24,7 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
@@ -38,7 +39,7 @@ import static org.apache.camel.Exchange.FILE_NAME;
  * Tar file data format.
  * Based on ZipFileDataFormat from camel-zipfile component
  */
-public class TarFileDataFormat implements DataFormat {
+public class TarFileDataFormat extends ServiceSupport implements DataFormat {
     private boolean usingIterator;
 
     public void setUsingIterator(boolean usingIterator) {
@@ -108,4 +109,14 @@ public class TarFileDataFormat implements DataFormat {
             }
         }
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }


[3/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: ca7fd9a833ffa5a8895159564f18a4d7cff8f950
Parents: 5f399e6
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 11:29:19 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 11:29:19 2015 +0200

----------------------------------------------------------------------
 .../mbean/ManagedDataFormatMBean.java           | 41 +++++++++
 .../DefaultManagementLifecycleStrategy.java     |  3 +
 .../DefaultManagementObjectStrategy.java        | 13 +++
 .../management/ManagedManagementStrategy.java   | 12 ++-
 .../management/mbean/ManagedDataFormat.java     | 91 ++++++++++++++++++++
 .../camel/spi/ManagementObjectStrategy.java     |  2 +
 6 files changed, 155 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
new file mode 100644
index 0000000..c5ed0e0
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.api.management.mbean;
+
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.api.management.ManagedAttribute;
+import org.apache.camel.api.management.ManagedOperation;
+
+public interface ManagedDataFormatMBean {
+
+    @ManagedAttribute(description = "Camel ID")
+    String getCamelId();
+
+    @ManagedAttribute(description = "Camel ManagementName")
+    String getCamelManagementName();
+
+    @ManagedAttribute(description = "DataFormat State")
+    String getState();
+
+    @ManagedOperation(description = "DataFormat information as JSon")
+    String informationJson();
+
+    @ManagedOperation(description = "Explain how this data format is configured")
+    TabularData explain(boolean allOptions);
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index ab4db16..1c52d2a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -81,6 +81,7 @@ import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.LifecycleStrategy;
@@ -449,6 +450,8 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                 managedBacklogDebuggers.put(backlogDebugger, md);
             }
             return md;
+        } else if (service instanceof DataFormat) {
+            answer = getManagementObjectStrategy().getManagedObjectForDataFormat(context, (DataFormat) service);
         } else if (service instanceof Producer) {
             answer = getManagementObjectStrategy().getManagedObjectForProducer(context, (Producer) service);
         } else if (service instanceof Consumer) {

http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 95d2a0f..d30e4fe 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -42,6 +42,7 @@ import org.apache.camel.management.mbean.ManagedComponent;
 import org.apache.camel.management.mbean.ManagedConsumer;
 import org.apache.camel.management.mbean.ManagedConvertBody;
 import org.apache.camel.management.mbean.ManagedCustomLoadBalancer;
+import org.apache.camel.management.mbean.ManagedDataFormat;
 import org.apache.camel.management.mbean.ManagedDelayer;
 import org.apache.camel.management.mbean.ManagedDynamicRouter;
 import org.apache.camel.management.mbean.ManagedEndpoint;
@@ -153,6 +154,7 @@ import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
 import org.apache.camel.processor.loadbalancer.WeightedLoadBalancer;
 import org.apache.camel.processor.validation.PredicateValidatingProcessor;
 import org.apache.camel.spi.BrowsableEndpoint;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementObjectStrategy;
 import org.apache.camel.spi.RouteContext;
@@ -180,6 +182,17 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
     }
 
     @SuppressWarnings({"deprecation", "unchecked"})
+    public Object getManagedObjectForDataFormat(CamelContext context, DataFormat dataFormat) {
+        if (dataFormat instanceof org.apache.camel.spi.ManagementAware) {
+            return ((org.apache.camel.spi.ManagementAware<DataFormat>) dataFormat).getManagedObject(dataFormat);
+        } else {
+            ManagedDataFormat md = new ManagedDataFormat(context, dataFormat);
+            md.init(context.getManagementStrategy());
+            return md;
+        }
+    }
+
+    @SuppressWarnings({"deprecation", "unchecked"})
     public Object getManagedObjectForEndpoint(CamelContext context, Endpoint endpoint) {
         // we only want to manage singleton endpoints
         if (!endpoint.isSingleton()) {

http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index 942df5f..58a6982 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -25,6 +25,7 @@ import org.apache.camel.management.mbean.ManagedBacklogTracer;
 import org.apache.camel.management.mbean.ManagedCamelContext;
 import org.apache.camel.management.mbean.ManagedComponent;
 import org.apache.camel.management.mbean.ManagedConsumer;
+import org.apache.camel.management.mbean.ManagedDataFormat;
 import org.apache.camel.management.mbean.ManagedEndpoint;
 import org.apache.camel.management.mbean.ManagedErrorHandler;
 import org.apache.camel.management.mbean.ManagedEventNotifier;
@@ -35,7 +36,6 @@ import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedThreadPool;
 import org.apache.camel.management.mbean.ManagedTracer;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.ManagementAgent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -92,6 +92,9 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
         } else if (managedObject instanceof ManagedComponent) {
             ManagedComponent mc = (ManagedComponent) managedObject;
             objectName = getManagementNamingStrategy().getObjectNameForComponent(mc.getComponent(), mc.getComponentName());
+        } else if (managedObject instanceof ManagedDataFormat) {
+            ManagedDataFormat md = (ManagedDataFormat) managedObject;
+            objectName = getManagementNamingStrategy().getObjectNameForDataFormat(md.getContext(), md.getDataFormat());
         } else if (managedObject instanceof ManagedEndpoint) {
             ManagedEndpoint me = (ManagedEndpoint) managedObject;
             objectName = getManagementNamingStrategy().getObjectNameForEndpoint(me.getEndpoint());
@@ -134,12 +137,7 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
             if (ms.getService() instanceof Endpoint) {
                 return null;
             }
-            if (ms.getService() instanceof DataFormat) {
-                DataFormat df = (DataFormat) ms.getService();
-                objectName = getManagementNamingStrategy().getObjectNameForDataFormat(ms.getContext(), df);
-            } else {
-                objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
-            }
+            objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
         }
 
         return nameType.cast(objectName);

http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
new file mode 100644
index 0000000..dcb5e09
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.mbean;
+
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.StatefulService;
+import org.apache.camel.api.management.ManagedInstance;
+import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.ManagedDataFormatMBean;
+import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.ManagementStrategy;
+
+@ManagedResource(description = "Managed DataFormat")
+public class ManagedDataFormat implements ManagedInstance, ManagedDataFormatMBean {
+    private final CamelContext camelContext;
+    private final DataFormat dataFormat;
+
+    public ManagedDataFormat(CamelContext camelContext, DataFormat dataFormat) {
+        this.camelContext = camelContext;
+        this.dataFormat = dataFormat;
+    }
+
+    public void init(ManagementStrategy strategy) {
+        // noop
+    }
+
+    public DataFormat getDataFormat() {
+        return dataFormat;
+    }
+
+    public CamelContext getContext() {
+        return camelContext;
+    }
+
+    @Override
+    public String getCamelId() {
+        return camelContext.getName();
+    }
+
+    @Override
+    public String getCamelManagementName() {
+        return camelContext.getManagementName();
+    }
+
+    @Override
+    public String getState() {
+        // must use String type to be sure remote JMX can read the attribute without requiring Camel classes.
+        if (dataFormat instanceof StatefulService) {
+            ServiceStatus status = ((StatefulService) dataFormat).getStatus();
+            return status.name();
+        }
+
+        // assume started if not a ServiceSupport instance
+        return ServiceStatus.Started.name();
+    }
+
+    @Override
+    public String informationJson() {
+        // TODO: not yet implemented
+        return null;
+    }
+
+    @Override
+    public TabularData explain(boolean allOptions) {
+        // TODO: not yet implemented
+        return null;
+    }
+
+    @Override
+    public DataFormat getInstance() {
+        return dataFormat;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/ca7fd9a8/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
index 5190cd6..b6acc7f 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
@@ -38,6 +38,8 @@ public interface ManagementObjectStrategy {
 
     Object getManagedObjectForComponent(CamelContext context, Component component, String name);
 
+    Object getManagedObjectForDataFormat(CamelContext context, DataFormat dataFormat);
+
     Object getManagedObjectForEndpoint(CamelContext context, Endpoint endpoint);
 
     Object getManagedObjectForErrorHandler(CamelContext context, RouteContext routeContext,


[7/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: 73e463199c8f37d7efbe65eb107cb55203296820
Parents: 4c650d4
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 13:34:35 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 13:34:35 2015 +0200

----------------------------------------------------------------------
 .../dataformat/xstream/AbstractXStreamWrapper.java     | 13 ++++++++++++-
 .../camel/dataformat/zipfile/ZipFileDataFormat.java    | 12 +++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/73e46319/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
index 2981f66..8b51a4b 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
@@ -38,13 +38,14 @@ import org.apache.camel.Exchange;
 import org.apache.camel.converter.jaxp.StaxConverter;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
 /**
  * An abstract class which implement <a href="http://camel.apache.org/data-format.html">data format</a>
  * ({@link DataFormat}) interface which leverage the XStream library for XML or JSON's marshaling and unmarshaling
  */
-public abstract class AbstractXStreamWrapper implements DataFormat {
+public abstract class AbstractXStreamWrapper extends ServiceSupport implements DataFormat {
 
     private XStream xstream;
     private HierarchicalStreamDriver xstreamDriver;
@@ -289,4 +290,14 @@ public abstract class AbstractXStreamWrapper implements DataFormat {
 
     protected abstract HierarchicalStreamReader createHierarchicalStreamReader(
             Exchange exchange, InputStream stream) throws XMLStreamException;
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/73e46319/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
index 884c608..4427650 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
@@ -26,6 +26,7 @@ import java.util.zip.ZipOutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
 
@@ -35,7 +36,7 @@ import static org.apache.camel.Exchange.FILE_NAME;
  * Zip file data format.
  * See {@link org.apache.camel.model.dataformat.ZipDataFormat} for "deflate" compression.
  */
-public class ZipFileDataFormat implements DataFormat {
+public class ZipFileDataFormat extends ServiceSupport implements DataFormat {
     private boolean usingIterator;
     
     public void setUsingIterator(boolean usingIterator) {
@@ -97,4 +98,13 @@ public class ZipFileDataFormat implements DataFormat {
         }
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }


[4/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: 0a991eabf139a9946d017649b5aae4d4637ff76a
Parents: ca7fd9a
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 11:52:43 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 11:54:41 2015 +0200

----------------------------------------------------------------------
 .../org/apache/camel/impl/GzipDataFormat.java   | 12 ++++-
 .../camel/impl/SerializationDataFormat.java     | 12 ++++-
 .../org/apache/camel/impl/StringDataFormat.java | 13 ++++-
 .../org/apache/camel/impl/ZipDataFormat.java    | 11 +++-
 .../camel/processor/MarshalProcessor.java       |  5 +-
 .../camel/processor/UnmarshalProcessor.java     |  5 +-
 .../java/org/apache/camel/spi/DataFormat.java   |  5 +-
 .../camel/impl/DataFormatContextAwareTest.java  | 13 ++++-
 .../apache/camel/impl/RefDataFormatTest.java    | 12 ++++-
 .../camel/management/ManagedDataFormatTest.java | 55 ++++++++++++++++++++
 ...DeadLetterChannelUnmarshalSetHeaderTest.java | 13 ++++-
 .../camel/processor/UnmarshalProcessorTest.java | 13 ++++-
 12 files changed, 157 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
index 236bd91..d89460a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
@@ -24,12 +24,13 @@ import java.util.zip.GZIPOutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.*;
 import org.apache.camel.util.IOHelper;
 
 /**
  * GZip {@link org.apache.camel.spi.DataFormat} for reading/writing data using gzip.
  */
-public class GzipDataFormat implements DataFormat {
+public class GzipDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat {
 
     public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
         InputStream is = exchange.getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, exchange, graph);
@@ -59,4 +60,13 @@ public class GzipDataFormat implements DataFormat {
         }
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
index 8d33d62..eb2fe24 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
@@ -32,7 +32,7 @@ import org.apache.camel.util.ExchangeHelper;
  *
  * @version 
  */
-public class SerializationDataFormat implements DataFormat {
+public class SerializationDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat {
 
     public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
         ObjectOutput out = ExchangeHelper.convertToMandatoryType(exchange, ObjectOutput.class, stream);
@@ -60,4 +60,14 @@ public class SerializationDataFormat implements DataFormat {
             }
         }
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
index 7b115ac..545c482 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
@@ -30,7 +30,7 @@ import org.apache.camel.util.ExchangeHelper;
  *
  * @version 
  */
-public class StringDataFormat implements DataFormat {
+public class StringDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat {
 
     private String charset;
 
@@ -73,5 +73,14 @@ public class StringDataFormat implements DataFormat {
 
         return answer;
     }
-    
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
index c496714..daa9062 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
@@ -31,7 +31,7 @@ import org.apache.camel.util.IOHelper;
  * "Deflate" compression data format.
  * See {@link org.apache.camel.model.dataformat.ZipFileDataFormat} for Zip file compression.
  */
-public class ZipDataFormat implements DataFormat {
+public class ZipDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat {
 
     private int compressionLevel;
 
@@ -78,4 +78,13 @@ public class ZipDataFormat implements DataFormat {
         }
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
index 1b78d86..d16205f 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
@@ -125,11 +125,14 @@ public class MarshalProcessor extends ServiceSupport implements AsyncProcessor,
         if (dataFormat instanceof CamelContextAware) {
             ((CamelContextAware) dataFormat).setCamelContext(camelContext);
         }
-        ServiceHelper.startService(dataFormat);
+        // add dataFormat as service which will also start the service
+        // (false => we and handling the lifecycle of the dataFormat)
+        getCamelContext().addService(dataFormat, false);
     }
 
     @Override
     protected void doStop() throws Exception {
         ServiceHelper.stopService(dataFormat);
+        getCamelContext().removeService(dataFormat);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
index 60883c0..3c5183c 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
@@ -122,12 +122,15 @@ public class UnmarshalProcessor extends ServiceSupport implements AsyncProcessor
         if (dataFormat instanceof CamelContextAware) {
             ((CamelContextAware) dataFormat).setCamelContext(camelContext);
         }
-        ServiceHelper.startService(dataFormat);
+        // add dataFormat as service which will also start the service
+        // (false => we and handling the lifecycle of the dataFormat)
+        getCamelContext().addService(dataFormat, false);
     }
 
     @Override
     protected void doStop() throws Exception {
         ServiceHelper.stopService(dataFormat);
+        getCamelContext().removeService(dataFormat);
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java b/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
index 0d59ca0..86ed336 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
@@ -21,6 +21,7 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.Service;
 
 /**
  * Represents a
@@ -31,7 +32,9 @@ import org.apache.camel.Message;
  *
  * @version 
  */
-public interface DataFormat {
+public interface DataFormat extends Service {
+
+    // TODO: DataFormats should extends Service like the others
 
     /**
      * Marshals the object to the given Stream.

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java b/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
index 24b55d6..db451b3 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.*;
 
 /**
  *
@@ -47,7 +48,7 @@ public class DataFormatContextAwareTest extends ContextTestSupport {
         assertNotNull(me.getCamelContext());
     }
 
-    private static class MyDataFormat implements DataFormat, CamelContextAware {
+    private static class MyDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, CamelContextAware {
 
         private CamelContext camelContext;
 
@@ -67,5 +68,15 @@ public class DataFormatContextAwareTest extends ContextTestSupport {
         public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
             return null;
         }
+
+        @Override
+        protected void doStart() throws Exception {
+            // noop
+        }
+
+        @Override
+        protected void doStop() throws Exception {
+            // noop
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
index 0908bb0..a947561 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
@@ -71,7 +71,7 @@ public class RefDataFormatTest extends ContextTestSupport {
     }
 
     // START SNIPPET: e2
-    public static final class MyReverseDataFormat implements DataFormat {
+    public static final class MyReverseDataFormat extends ServiceSupport implements DataFormat {
 
         public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
             byte[] bytes = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, graph);
@@ -93,6 +93,16 @@ public class RefDataFormatTest extends ContextTestSupport {
             }
             return sb.toString();
         }
+
+        @Override
+        protected void doStart() throws Exception {
+            // noop
+        }
+
+        @Override
+        protected void doStop() throws Exception {
+            // noop
+        }
     }
     // END SNIPPET: e2
 

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
new file mode 100644
index 0000000..fe5a58e
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management;
+
+import java.util.Set;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version 
+ */
+public class ManagedDataFormatTest extends ManagementTestSupport {
+
+    public void testManageDataFormat() throws Exception {
+        // JMX tests dont work well on AIX CI servers (hangs them)
+        if (isPlatform("aix")) {
+            return;
+        }
+
+        MBeanServer mbeanServer = getMBeanServer();
+
+        // there should be 1 data format
+        Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=dataformats,*"), null);
+        assertEquals(1, set.size());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("seda:test")
+                    .unmarshal().string("iso-8859-1")
+                        .to("mock:result");
+            }
+        };
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java
index 5f6851f..41760d4 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
 /**
  *
@@ -60,7 +61,7 @@ public class DeadLetterChannelUnmarshalSetHeaderTest extends ContextTestSupport
         };
     }
 
-    private class MyDataFormat implements DataFormat {
+    private class MyDataFormat extends ServiceSupport implements DataFormat {
 
         @Override
         public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
@@ -71,5 +72,15 @@ public class DeadLetterChannelUnmarshalSetHeaderTest extends ContextTestSupport
         public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
             throw new IllegalArgumentException("Damn");
         }
+
+        @Override
+        protected void doStart() throws Exception {
+            // noop
+        }
+
+        @Override
+        protected void doStop() throws Exception {
+            // noop
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0a991eab/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
index 01f83e8..7592ee3 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/UnmarshalProcessorTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.TestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
 public class UnmarshalProcessorTest extends TestSupport {
 
@@ -72,7 +73,7 @@ public class UnmarshalProcessorTest extends TestSupport {
         assertSame("UnmarshalProcessor did not make use of the returned object being returned while unmarshalling", unmarshalled, exchange.getOut().getBody());
     }
 
-    private static class MyDataFormat implements DataFormat {
+    private static class MyDataFormat extends ServiceSupport implements DataFormat {
 
         private final Object object;
 
@@ -97,6 +98,16 @@ public class UnmarshalProcessorTest extends TestSupport {
         public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
             return object;
         }
+
+        @Override
+        protected void doStart() throws Exception {
+            // noop
+        }
+
+        @Override
+        protected void doStop() throws Exception {
+            // noop
+        }
     }
 
 }


[6/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: 4c650d4c4d5dfb15318495fcf6ef3be8c18eafab
Parents: 9765d56
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 13:31:58 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 13:31:58 2015 +0200

----------------------------------------------------------------------
 .../univocity/AbstractUniVocityDataFormat.java      | 14 +++++++++++++-
 .../converter/xmlbeans/XmlBeansDataFormat.java      | 14 +++++++++++++-
 .../camel/dataformat/xmlrpc/XmlRpcDataFormat.java   | 14 ++++++++++++--
 .../xmlsecurity/XMLSecurityDataFormat.java          | 16 +++++++++++++---
 4 files changed, 51 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4c650d4c/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/AbstractUniVocityDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/AbstractUniVocityDataFormat.java b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/AbstractUniVocityDataFormat.java
index b5d6959..f459377 100644
--- a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/AbstractUniVocityDataFormat.java
+++ b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/AbstractUniVocityDataFormat.java
@@ -31,6 +31,7 @@ import com.univocity.parsers.common.CommonWriterSettings;
 import com.univocity.parsers.common.Format;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
 import static org.apache.camel.util.IOHelper.getCharsetName;
 
@@ -48,7 +49,8 @@ import static org.apache.camel.util.IOHelper.getCharsetName;
  * @param <DF>  the data format class (for providing a fluent API)
  */
 public abstract class AbstractUniVocityDataFormat<F extends Format, CWS extends CommonWriterSettings<F>,
-        W extends AbstractWriter<CWS>, CPS extends CommonParserSettings<F>, P extends AbstractParser<CPS>, DF extends AbstractUniVocityDataFormat<F, CWS, W, CPS, P, DF>> implements DataFormat {
+        W extends AbstractWriter<CWS>, CPS extends CommonParserSettings<F>, P extends AbstractParser<CPS>, DF extends AbstractUniVocityDataFormat<F, CWS, W, CPS, P, DF>>
+        extends ServiceSupport implements DataFormat {
     protected String nullValue;
     protected Boolean skipEmptyLines;
     protected Boolean ignoreTrailingWhitespaces;
@@ -615,4 +617,14 @@ public abstract class AbstractUniVocityDataFormat<F extends Format, CWS extends
     private DF self() {
         return (DF) this;
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4c650d4c/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
index 41dd0ff..a357fc5 100644
--- a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
+++ b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
@@ -22,6 +22,7 @@ import java.util.concurrent.Callable;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.xmlbeans.XmlObject;
@@ -30,7 +31,7 @@ import org.apache.xmlbeans.XmlObject;
  * A <a href="http://camel.apache.org/data-format.html">data format</a>
  * ({@link DataFormat}) using XmlBeans to marshal to and from XML
  */
-public class XmlBeansDataFormat implements DataFormat {
+public class XmlBeansDataFormat extends ServiceSupport implements DataFormat {
 
     public void marshal(final Exchange exchange, final Object body, final OutputStream stream) throws Exception {
         ObjectHelper.callWithTCCL(new Callable<Void>() {
@@ -52,4 +53,15 @@ public class XmlBeansDataFormat implements DataFormat {
             }
         }, exchange);
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4c650d4c/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
index b94db64..1e2be5a 100644
--- a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
+++ b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
@@ -23,6 +23,7 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 
+import org.apache.camel.support.ServiceSupport;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -45,7 +46,7 @@ import org.apache.xmlrpc.parser.XmlRpcRequestParser;
 import org.apache.xmlrpc.parser.XmlRpcResponseParser;
 import org.apache.xmlrpc.util.SAXParsers;
 
-public class XmlRpcDataFormat implements DataFormat {
+public class XmlRpcDataFormat extends ServiceSupport implements DataFormat {
     private XmlRpcStreamRequestConfig xmlRpcStreamRequestConfig = new XmlRpcHttpRequestConfigImpl();
     private TypeFactory typeFactory = new TypeFactoryImpl(null);
     private boolean isRequest;
@@ -76,7 +77,6 @@ public class XmlRpcDataFormat implements DataFormat {
             // TODO write the fault message here
             writer.write(xmlRpcStreamRequestConfig, graph);
         }
-        
     }
 
     protected int getErrorCode(Exchange exchange) {
@@ -167,4 +167,14 @@ public class XmlRpcDataFormat implements DataFormat {
         return typeFactory;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4c650d4c/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
index dc0713f..b7eed69 100755
--- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
+++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
@@ -40,6 +40,7 @@ import javax.crypto.spec.DESedeKeySpec;
 import javax.crypto.spec.SecretKeySpec;
 import javax.xml.transform.dom.DOMSource;
 
+import org.apache.camel.support.ServiceSupport;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -65,7 +66,7 @@ import org.slf4j.LoggerFactory;
 
 
 
-public class XMLSecurityDataFormat implements DataFormat, CamelContextAware {
+public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat, CamelContextAware {
 
     /**
      * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
@@ -368,7 +369,6 @@ public class XMLSecurityDataFormat implements DataFormat, CamelContextAware {
         this.camelContext = camelContext;
         try {
             setDefaultsFromContext(camelContext);
-
         } catch (Exception e) {
             throw new IllegalStateException("Could not initialize XMLSecurityDataFormat with camelContext. ", e);
         }
@@ -378,7 +378,17 @@ public class XMLSecurityDataFormat implements DataFormat, CamelContextAware {
     public CamelContext getCamelContext() {
         return camelContext;
     }
-    
+
+    @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+
     /**
      * Sets missing properties that are defined in the Camel context.
      * @deprecated  this operation populates the data format using depreciated properties and will be


[2/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: 5f399e6b5fc2c7ad045cd056eca7d6fea55646ea
Parents: 4935c1e
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 11:20:09 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 11:20:09 2015 +0200

----------------------------------------------------------------------
 .../management/DefaultManagementNamingStrategy.java   | 14 ++++++++++++++
 .../camel/management/ManagedManagementStrategy.java   |  8 +++++++-
 .../apache/camel/spi/ManagementNamingStrategy.java    |  2 ++
 3 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5f399e6b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
index fdd538a..a9c8a70 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
@@ -34,6 +34,7 @@ import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.StaticService;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.ManagementNamingStrategy;
@@ -52,6 +53,7 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
     public static final String KEY_CONTEXT = "context";
     public static final String TYPE_CONTEXT = "context";
     public static final String TYPE_ENDPOINT = "endpoints";
+    public static final String TYPE_DATAFORMAT = "dataformats";
     public static final String TYPE_PROCESSOR = "processors";
     public static final String TYPE_CONSUMER = "consumers";
     public static final String TYPE_PRODUCER = "producers";
@@ -119,6 +121,18 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
         return createObjectName(buffer);
     }
 
+    public ObjectName getObjectNameForDataFormat(CamelContext context, DataFormat dataFormat) throws MalformedObjectNameException {
+        StringBuilder buffer = new StringBuilder();
+        buffer.append(domainName).append(":");
+        buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(",");
+        buffer.append(KEY_TYPE + "=" + TYPE_DATAFORMAT + ",");
+        buffer.append(KEY_NAME + "=").append(dataFormat.getClass().getSimpleName());
+        if (!(dataFormat instanceof StaticService)) {
+            buffer.append("(").append(ObjectHelper.getIdentityHashCode(dataFormat)).append(")");
+        }
+        return createObjectName(buffer);
+    }
+
     public ObjectName getObjectNameForComponent(Component component, String name) throws MalformedObjectNameException {
         StringBuilder buffer = new StringBuilder();
         buffer.append(domainName).append(":");

http://git-wip-us.apache.org/repos/asf/camel/blob/5f399e6b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index 6f0966b..942df5f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -35,6 +35,7 @@ import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedThreadPool;
 import org.apache.camel.management.mbean.ManagedTracer;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.ManagementAgent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,7 +134,12 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
             if (ms.getService() instanceof Endpoint) {
                 return null;
             }
-            objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
+            if (ms.getService() instanceof DataFormat) {
+                DataFormat df = (DataFormat) ms.getService();
+                objectName = getManagementNamingStrategy().getObjectNameForDataFormat(ms.getContext(), df);
+            } else {
+                objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
+            }
         }
 
         return nameType.cast(objectName);

http://git-wip-us.apache.org/repos/asf/camel/blob/5f399e6b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
index 6d5d4ff..0c4adf4 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
@@ -46,6 +46,8 @@ public interface ManagementNamingStrategy {
 
     ObjectName getObjectNameForEndpoint(Endpoint endpoint) throws MalformedObjectNameException;
 
+    ObjectName getObjectNameForDataFormat(CamelContext context, DataFormat endpoint) throws MalformedObjectNameException;
+
     ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForProcessor(CamelContext context, Processor processor, NamedNode definition) throws MalformedObjectNameException;


[8/8] camel git commit: CAMEL-9157: JMX - Add dataformat as mbean category

Posted by da...@apache.org.
CAMEL-9157: JMX - Add dataformat as mbean category


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

Branch: refs/heads/master
Commit: d4228467a5b2d5cea4bcbd926df5a950f6c0b59b
Parents: 73e4631
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 24 13:37:22 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 24 13:37:22 2015 +0200

----------------------------------------------------------------------
 .../src/main/java/__name__DataFormat.java             | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d4228467/tooling/archetypes/camel-archetype-dataformat/src/main/resources/archetype-resources/src/main/java/__name__DataFormat.java
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-dataformat/src/main/resources/archetype-resources/src/main/java/__name__DataFormat.java b/tooling/archetypes/camel-archetype-dataformat/src/main/resources/archetype-resources/src/main/java/__name__DataFormat.java
index 857be28..84cd2f8 100644
--- a/tooling/archetypes/camel-archetype-dataformat/src/main/resources/archetype-resources/src/main/java/__name__DataFormat.java
+++ b/tooling/archetypes/camel-archetype-dataformat/src/main/resources/archetype-resources/src/main/java/__name__DataFormat.java
@@ -21,12 +21,13 @@ import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.support.ServiceSupport;
 
 /**
  * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
  * for ${name} data.
  */
-public class ${name}DataFormat implements DataFormat {
+public class ${name}DataFormat extends ServiceSupport implements DataFormat {
 
     public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
         byte[] bytes = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, graph);
@@ -37,4 +38,15 @@ public class ${name}DataFormat implements DataFormat {
         byte[] bytes = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, stream);
         return bytes;
     }
+
+    @Override
+    protected void doStart() throws Exception {
+        // init logic here
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // cleanup logic here
+    }
+
 }