I logged a ticket to improve this
https://issues.apache.org/jira/browse/CAMEL-9524

On Tue, Jan 19, 2016 at 8:38 AM, Claus Ibsen <[email protected]> wrote:
> Hi
>
> I dont think we should probe the file types by default. I doesn't add
> so much value and has these potential issue as shown here.
> I think we should add an option on the file component to turn this off|on.
>
> Its introduced by: https://issues.apache.org/jira/browse/CAMEL-8357
>
> On Tue, Jan 19, 2016 at 2:58 AM, Willem Jiang <[email protected]> wrote:
>> Hi,
>>
>> It looks like the JVM have some trouble to detect the content type of the 
>> file.
>>
>>
>> Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
>> j  sun.nio.fs.GnomeFileTypeDetector.probeUsingGio(J)[B+0
>> j  
>> sun.nio.fs.GnomeFileTypeDetector.implProbeContentType(Ljava/nio/file/Path;)Ljava/lang/String;+53
>> j  
>> sun.nio.fs.UnixFileSystemProvider$2.implProbeContentType(Ljava/nio/file/Path;)Ljava/lang/String;+26
>> j  
>> sun.nio.fs.AbstractFileTypeDetector.probeContentType(Ljava/nio/file/Path;)Ljava/lang/String;+16
>> j  
>> java.nio.file.Files.probeContentType(Ljava/nio/file/Path;)Ljava/lang/String;+47
>> j  
>> org.apache.camel.component.file.GenericFile.populateHeaders(Lorg/apache/camel/component/file/GenericFileMessage;)V+84
>>
>> To Fix this issue, you may need to write your own FileTypeDetector[1].
>>
>>
>> [1]http://stackoverflow.com/questions/22679201/java-probecontenttype
>>
>> --
>> Willem Jiang
>>
>>
>> Blog: http://willemjiang.blogspot.com (English)
>> http://jnn.iteye.com (Chinese)
>> Twitter: willemjiang
>> Weibo: 姜宁willem
>>
>>
>>
>> On January 18, 2016 at 7:48:20 PM, Hubertus.Willuhn 
>> ([email protected]) wrote:
>>> Hi Community,
>>>
>>> i got an error reading 4 directory (with 1 file per directory) in 4 routes
>>> with file: endpoint.
>>> I use Camel 2.16.1 and Spring 4.1.8 as well as Spring Boot 1.2.7.
>>>
>>> After Compiling my code the app starts normal via Spring Boot but after
>>> initializing my routes the
>>> app crashes with error:
>>>
>>> # A fatal error has been detected by the Java Runtime Environment:
>>> (process:15444): GLib-GObject-CRITICAL **: g_object_new: assertion
>>> `G_TYPE_IS_OBJECT (object_type)' failed
>>> #
>>> # SIGSEGV (0xb) at pc=0x00007fd4f12ed5e9, pid=15444, tid=140552575444736
>>> [thread 140552572286720 also had an error]
>>> #
>>> # JRE version: Java(TM) SE Runtime Environment (8.0_45-b14) (build
>>> 1.8.0_45-b14)
>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode
>>> linux-amd64 compressed oops)
>>> # Problematic frame:
>>> # C [libglib-2.0.so.0+0x595e9] g_slice_alloc+0x139
>>> #
>>> # Failed to write core dump. Core dumps have been disabled. To enable core
>>> dumping, try "ulimit -c unlimited" before starting Java again
>>> #
>>> # An error report file with more information is saved as:
>>>
>>> The saved error log can you see as an attachment: error.log
>>>
>>>
>>> My routes are 4 classes (one for every directory) which got there routes
>>> from a abstract base class.
>>> Configuration is correct. So all parameters are set.
>>>
>>> The main base route looks like:
>>>
>>> from(producer())
>>> // split document on each record
>>> .split().xtokenize(splitPath(), extractionMode(),
>>> namespaces()).streaming()
>>> //.tokenizeXML(this.splitPath(), this.root()).streaming()
>>> // threading
>>> .parallelProcessing().executorServiceRef(CamelConfig.THREAD_POOL_NAME)
>>> // TODO filter by parameter
>>> //.filter(simple("${exchangeProperty.CamelSplitIndex} > 46000"))
>>> //.setHeader(RECID, this.id())
>>> .process(processor())
>>> .to(consumer())
>>> //.end() // filter
>>> .end() // split
>>> .stop();
>>>
>>> The next class implementing some of the parameter functions looks like
>>>
>>> protected String baseDir;
>>>
>>> @Override
>>> protected Processor processor()
>>> {
>>> return (exchange -> {
>>> String body = exchange.getIn().getBody(String.class);
>>>
>>> // remove whitespaces
>>> body = body.trim();
>>>
>>> RegEx regex = new RegEx(">\\s+<").exec(body);
>>>
>>> body = regex.replaceAll("><");
>>>
>>> // extract record id
>>> regex = new RegEx(idExpression()).exec(body);
>>>
>>> if(!regex.hits()) {
>>> throw new IllegalArgumentException("Invalid XML-content detected: no
>>> record id found.");
>>> }
>>>
>>> exchange.getIn().setBody(body, String.class);
>>> exchange.getIn().setHeader(RECID, regex.group(1));
>>> });
>>> }
>>>
>>> protected String idExpression()
>>> {
>>> return "> }
>>>
>>> and the last level did the endpoint declaration for the directory:
>>>
>>> @Override
>>> public Endpoint producer()
>>> {
>>> return endpoint("file:" + this.baseDir + "/srv" + "?noop=true");
>>> }
>>>
>>> @Override
>>> public Endpoint consumer()
>>> {
>>> return endpoint(WI_Aggregator.ENDPOINT);
>>> }
>>>
>>> @Override
>>> protected String splitPath()
>>> {
>>> return "/CENSRV/WI";
>>> }
>>>
>>> Did somebody got an idea what to do?
>>>
>>> Best regards
>>>
>>> Hubertus
>>>
>>>
>>>
>>> --
>>> View this message in context: 
>>> http://camel.465427.n5.nabble.com/Error-Reading-Files-from-four-different-Routes-tp5776391.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to