### Question:
SystemInfo { public static SystemInfo get(long tenantId) { SystemInfo info = new SystemInfo(tenantId); try { PluginRegistry registry = PluginRegistry.getInstance(); Collection<Extension> exts = registry.getExtensions("logicaldoc-core", "SystemInfo"); if (!exts.isEmpty()) { String className = exts.iterator().next().getParameter("class").valueAsString(); try { @SuppressWarnings("rawtypes") Class clazz = Class.forName(className); @SuppressWarnings("unchecked") Object tmp = clazz.getDeclaredConstructor().newInstance(); if (!(tmp instanceof SystemInfo)) throw new Exception("The specified info " + className + " doesn't implement SystemInfo interface"); info = (SystemInfo) tmp; info.setTenantId(tenantId); } catch (Throwable e) { log.error(e.getMessage(), e); } } } catch (Throwable e) { log.error(e.getMessage(), e); } if (info.getFeatures() == null || info.getFeatures().length == 0) try { List<String> features = new ArrayList<String>(); PluginRegistry registry = PluginRegistry.getInstance(); Collection<Extension> exts = registry.getExtensions("logicaldoc-core", "Feature"); for (Extension extension : exts) { String name = extension.getParameter("name").valueAsString(); if (!features.contains(name)) features.add(name); } info.setFeatures(features.toArray(new String[0])); } catch (Throwable e) { log.error(e.getMessage()); } try { ContextProperties config = Context.get().getProperties(); info.setRelease(config.getProperty("product.release")); info.setYear(config.getProperty("product.year")); info.setRunLevel(config.getProperty("runlevel")); info.setInstallationId(config.getProperty("id")); } catch (Throwable e) { log.error(e.getMessage()); } try { info.setHostName(InetAddress.getLocalHost().getHostName()); } catch (UnknownHostException e) { } return info; } protected  SystemInfo(); protected  SystemInfo(long tenantId); String getProductName(); void setProductName(String productName); String getProduct(); void setProduct(String product); String getRelease(); void setRelease(String release); String getYear(); void setYear(String year); String getHelp(); void setHelp(String help); String getBugs(); void setBugs(String bugs); String getUrl(); void setUrl(String url); String getForum(); void setForum(String forum); String getVendor(); void setVendor(String vendor); String getVendorAddress(); void setVendorAddress(String vendorAddress); String getVendorCap(); void setVendorCap(String vendorCap); String getVendorCountry(); void setVendorCountry(String vendorCountry); String getVendorCity(); void setVendorCity(String vendorCity); String getSupport(); void setSupport(String support); String getInstallationId(); void setInstallationId(String installationId); String getLicensee(); void setLicensee(String licensee); String getRunLevel(); void setRunLevel(String runLevel); static SystemInfo get(long tenantId); static SystemInfo get(); String[] getFeatures(); void setFeatures(String[] features); Date getDate(); void setDate(Date date); String getHostName(); void setHostName(String hostName); long getTenantId(); void setTenantId(long tenantId);  }### Answer:
@Test public void testGet() throws UnsupportedEncodingException { SystemInfo info = SystemInfo.get(); Assert.assertEquals("LogicalDOC", info.getProduct()); Assert.assertEquals("LogicalDOC Community", info.getProductName()); }