1. Project Clover database Mon Aug 27 2018 22:12:52 BRT
  2. Package net.sf.jmimemagic.detectors

File JsonFileDetector.java

 

Coverage histogram

../../../../img/srcFileCovDistChart5.png
28% of files have more coverage

Code metrics

4
23
8
1
148
71
16
0.7
2.88
8
2

Classes

Class Line # Actions
JsonFileDetector 27 23 0% 16 20
0.4285714342.9%
 

Contributing tests

This file is covered by 5 tests. .

Source view

1    /*
2    jMimeMagic (TM) is a Java Library for determining the content type of files or streams
3    Copyright (C) 2003-2017 David Castro
4    */
5    package net.sf.jmimemagic.detectors;
6   
7    import java.io.BufferedInputStream;
8    import java.io.File;
9    import java.io.FileInputStream;
10    import java.io.IOException;
11    import java.util.Map;
12   
13    import org.apache.commons.logging.Log;
14    import org.apache.commons.logging.LogFactory;
15   
16    import com.fasterxml.jackson.core.JsonFactory;
17    import com.fasterxml.jackson.core.JsonParser;
18   
19    import net.sf.jmimemagic.MagicDetector;
20   
21    /**
22    * DOCUMENT ME!
23    *
24    * @author $Author$
25    * @version $Revision$
26    */
 
27    public class JsonFileDetector implements MagicDetector {
28    private static Log log = LogFactory.getLog(JsonFileDetector.class);
29   
30    /**
31    * Creates a new TextFileDetector object.
32    */
 
33  3959 toggle public JsonFileDetector() {
34  3929 super();
35    }
36   
37    /**
38    * DOCUMENT ME!
39    *
40    * @return DOCUMENT ME!
41    */
 
42  0 toggle @Override
43    public String getDisplayName() {
44  0 return "Json File Detector";
45    }
46   
47    /**
48    * DOCUMENT ME!
49    *
50    * @return DOCUMENT ME!
51    */
 
52  0 toggle @Override
53    public String[] getHandledExtensions() {
54  0 return new String[] { "js", "json" };
55    }
56   
57    /**
58    * DOCUMENT ME!
59    *
60    * @return DOCUMENT ME!
61    */
 
62  1 toggle @Override
63    public String[] getHandledTypes() {
64  1 return new String[] { "application/json" };
65    }
66   
67    /**
68    * DOCUMENT ME!
69    *
70    * @return DOCUMENT ME!
71    */
 
72  0 toggle @Override
73    public String getName() {
74  0 return "jsonfiledetector";
75    }
76   
77    /**
78    * DOCUMENT ME!
79    *
80    * @return DOCUMENT ME!
81    */
 
82  0 toggle @Override
83    public String getVersion() {
84  0 return "0.1";
85    }
86   
87    /**
88    * DOCUMENT ME!
89    *
90    * @param data DOCUMENT ME!
91    * @param offset DOCUMENT ME!
92    * @param length DOCUMENT ME!
93    * @param bitmask DOCUMENT ME!
94    * @param comparator DOCUMENT ME!
95    * @param mimeType DOCUMENT ME!
96    * @param params DOCUMENT ME!
97    *
98    * @return DOCUMENT ME!
99    */
 
100  3906 toggle @Override
101    public String[] process(final byte[] data, final int offset, final int length,
102    final long bitmask, final char comparator, final String mimeType,
103    final Map<String, String> params) {
104  3939 log.debug("processing stream data");
105  3857 try (JsonParser parser = new JsonFactory()
106    .createParser(new String(data, "UTF-8"))) {
107  10816 while (!parser.isClosed()) {
108  8886 parser.nextToken();
109    }
110  1989 return new String[] { "application/json" };
111    } catch (final IOException e) {
112  1967 log.debug("JsonFileDetector: failed to process data");
113    }
114  1961 return null;
115    }
116   
117    /**
118    * DOCUMENT ME!
119    *
120    * @param file DOCUMENT ME!
121    * @param offset DOCUMENT ME!
122    * @param length DOCUMENT ME!
123    * @param bitmask DOCUMENT ME!
124    * @param comparator DOCUMENT ME!
125    * @param mimeType DOCUMENT ME!
126    * @param params DOCUMENT ME!
127    *
128    * @return DOCUMENT ME!
129    */
 
130  0 toggle @Override
131    public String[] process(final File file, final int offset, final int length,
132    final long bitmask, final char comparator, final String mimeType,
133    final Map<String, String> params) {
134  0 log.debug("processing file data");
135  0 try (BufferedInputStream is = new BufferedInputStream(
136    new FileInputStream(file))) {
137  0 final byte[] b = new byte[length];
138  0 final int n = is.read(b, offset, length);
139  0 if (n > 0) {
140  0 return process(b, offset, length, bitmask, comparator, mimeType,
141    params);
142    }
143    } catch (final IOException e) {
144  0 log.info("JsonFileDetector: file " + file.getName());
145    }
146  0 return null;
147    }
148    }