Clover Coverage Report
Coverage timestamp: Fri May 24 2013 13:47:27 UTC
../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
14   144   14   1.08
2   63   1   6.5
13     1.08  
2    
 
  BasicKernel       Line # 28 14 13 96.4% 0.96428573
  BasicKernel.LazyHolderTimeoutMethods       Line # 111 0 1 0% 0.0
 
  (252)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2013, Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10    * This program is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13    * GNU General Public License for more details.
14    */
15   
16    package org.qedeq.kernel.bo.common;
17   
18    import java.net.URLConnection;
19   
20    import org.qedeq.base.utility.YodaUtility;
21   
22   
23    /**
24    * This class provides basic informations about the kernel.
25    *
26    * @author Michael Meyling
27    */
 
28    public final class BasicKernel implements KernelProperties {
29   
30   
31    /** Version of this kernel. */
32    private static final String KERNEL_VERSION = "0.04.07";
33   
34    /** Version dependent directory of this kernel. */
35    private static final String KERNEL_VERSION_DIRECTORY = KERNEL_VERSION.replace('.', '_');
36   
37    /** Version code . */
38    private static final String KERNEL_CODE_NAME = "gaffsie";
39   
40    /** Kernel version dedication. */
41    private static final String KERNEL_DEDICATED
42    = "dedicated to Aang, who had been encased within a sphere of ice for one hundred years";
43   
44    /** Descriptive version information of this kernel. */
45    private static final String DESCRIPTIVE_KERNEL_VERSION
46    = "Hilbert II - Version " + KERNEL_VERSION + " (" + KERNEL_CODE_NAME + ") ["
47    + getBuildIdFromManifest() + "] " + KERNEL_DEDICATED;
48   
49    /** Maximal supported rule version of this kernel. */
50    private static final String MAXIMAL_RULE_VERSION = "1.01.00";
51   
52    /**
53    * Constructor.
54    */
 
55  58 toggle public BasicKernel() {
56    // nothing to do
57    }
58   
59    /**
60    * Get build information from JAR manifest file. Is also non empty string if no manifest
61    * information is available.
62    *
63    * @return Implementation-version.
64    */
 
65  50 toggle private static String getBuildIdFromManifest() {
66  50 String build = BasicKernel.class.getPackage().getImplementationVersion();
67  50 if (build == null) {
68  50 build = "no regular build";
69    }
70  50 return build;
71    }
72   
 
73  2 toggle public String getBuildId() {
74  2 return getBuildIdFromManifest();
75    }
76   
 
77  2 toggle public final String getKernelVersion() {
78  2 return KERNEL_VERSION;
79    }
80   
 
81  2 toggle public final String getKernelCodeName() {
82  2 return KERNEL_CODE_NAME;
83    }
84   
 
85  1804 toggle public final String getKernelVersionDirectory() {
86  1804 return KERNEL_VERSION_DIRECTORY;
87    }
88   
 
89  510 toggle public final String getDescriptiveKernelVersion() {
90  510 return DESCRIPTIVE_KERNEL_VERSION;
91    }
92   
 
93  2 toggle public final String getDedication() {
94  2 return KERNEL_DEDICATED;
95    }
96   
 
97  501 toggle public final String getMaximalRuleVersion() {
98  501 return MAXIMAL_RULE_VERSION;
99    }
100   
 
101  6 toggle public final boolean isRuleVersionSupported(final String ruleVersion) {
102    // FIXME 20130113 m31: this must change if we really want to use it
103  6 return MAXIMAL_RULE_VERSION.equals(ruleVersion);
104    }
105   
106    /**
107    * This class ist just for solving the lazy loading problem thread save.
108    * see <a href="http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom">
109    * Initialization_on_demand_holder_idiom</a>.
110    */
 
111    private static final class LazyHolderTimeoutMethods {
112   
113    /** Lazy initialized constant that knows about the existence of the method
114    * <code>URLConnection.setConnectTimeout</code>. This depends on the currently running
115    * JVM. */
116    private static final boolean IS_SET_CONNECTION_TIMEOUT_SUPPORTED = YodaUtility.existsMethod(
117    URLConnection.class, "setConnectTimeout",
118    new Class[] {Integer.TYPE});
119   
120    /** Lazy initialized constant that knows about the existence of the method
121    * <code>URLConnection.setReadTimeout</code>. This depends on the currently running
122    * JVM. */
123    private static final boolean IS_SET_READ_TIMEOUT_SUSPPORTED = YodaUtility.existsMethod(
124    URLConnection.class, "setReadTimeout",
125    new Class[] {Integer.TYPE});
126   
127    /**
128    * Hidden constructor.
129    */
 
130  0 toggle private LazyHolderTimeoutMethods() {
131    // nothing to do
132    }
133   
134    }
135   
 
136  2 toggle public boolean isSetConnectionTimeOutSupported() {
137  2 return LazyHolderTimeoutMethods.IS_SET_CONNECTION_TIMEOUT_SUPPORTED;
138    }
139   
 
140  2 toggle public boolean isSetReadTimeoutSupported() {
141  2 return LazyHolderTimeoutMethods.IS_SET_READ_TIMEOUT_SUSPPORTED;
142    }
143   
144    }