private String uri(String path) { return Msc.specialUri(path); }
public static void after(Object test) { Msc.logSection("END TEST"); for (RapidoidModule mod : RapidoidModules.getAllAvailable()) { mod.afterTest(test); } Msc.logSection("FINISHED"); }
private String pathOf(Method method, String ctxPath, String uri) { String path = !U.isEmpty(uri) ? uri : method.getName(); return Msc.uri(ctxPath, path); }
public static String semiSpecialUri(String... suffixes) { String uri = uri(suffixes); String suffix = Str.triml(uri, '/'); return Msc.isPlatform() ? "/rapidoid/" + suffix : "/" + suffix; }
public static String specialUri(String... suffixes) { String uri = uri(suffixes); String suffix = Str.triml(uri, '/'); return specialUriPrefix() + suffix; }
static void inferCallers() { if (!Msc.isPlatform() && !restarted && appPkgName == null && mainClassName == null) { appPkgName = Msc.getCallingPackage(); if (mainClassName == null) { Class<?> mainClass = Msc.getCallingMainClass(); invoked.add(mainClass); mainClassName = mainClass != null ? mainClass.getName() : null; } if (mainClassName != null || appPkgName != null) { Log.info("Inferred application root", "!main", mainClassName, "!package", appPkgName); } } }
public static synchronized void bootstrapAdminCredentials() { Config admin = Conf.USERS.sub("admin"); if (!admin.has("password") && !admin.has("hash")) { String pass = randomAdminPassword(); admin.set("password", pass); String maybePass = "" + Msc.maybeMasked(pass); Msc.logSection(AnsiColor.lightBlue("ADMIN CREDENTIALS:") + " username = admin, password = " + maybePass); } }
public static String specialUriPrefix() { return Msc.isPlatform() ? "/rapidoid/" : "/_"; }
public static synchronized void initialize() { if (Msc.isMavenBuild()) { Msc.printRapidoidBanner(); } else { String proc = Msc.processName(); String dir = System.getProperty("user.dir"); String maxMem = (Runtime.getRuntime().maxMemory() / 1024 / 1024) + " MB"; Log.info("!Starting " + RapidoidInfo.nameAndInfo()); Log.info("!System info", "os", Msc.OS_NAME, "java", Msc.maybeMasked(Msc.javaVersion()), "process", Msc.maybeMasked(proc), "max memory", Msc.maybeMasked(maxMem), "dir", dir); } if (MscOpts.hasLogback()) { LogbackUtil.setupLogger(); } }
private static void runMainClass(Object test) { IntegrationTest testInfo = Metadata.getAnnotationRecursive(test.getClass(), IntegrationTest.class); if (testInfo != null) { Msc.logSection("RUN MAIN"); Class<?> main = testInfo.main(); String[] args = testInfo.args(); Msc.invokeMain(main, args); } }
model.put("adminUrl", ReqInfoUtils.adminUrl()); model.put("loginUri", Msc.specialUri("login")); model.put("logoutUri", Msc.specialUri("logout")); model.put("profileUri", Msc.semiSpecialUri("profile")); model.put("graphsUri", Msc.specialUri("graphs")); model.put("dev", Msc.isDev()); model.put("admin", "admin".equalsIgnoreCase(req.zone()));
public static Object err(Req req, Throwable err) { return err(req, Msc.errorMsg(err)); }
public synchronized void restart() { if (!initialized) { initialized = true; ignore = false; if (Env.dev()) { if (Msc.withWatchModule()) { if (!Msc.isPlatform()) { WatchForChanges.activate(); } } else { Log.warn("Cannot watch for class changes, the rapidoid-watch module is missing!"); } } else { Log.warn("Not running in dev mode, hot class reloading is disabled!"); } } }
@Override public String toString() { String info = verb() + " " + path(); if (U.notEmpty(params)) { info += "?" + U.join("&", Msc.protectSensitiveInfo(params, "<...>").entrySet()); } return info; }
private static void bootstrapJPA(String[] packages, DataSource dataSource, Class<?>[] providedEntities) { Msc.logSection("Bootstrapping JPA (Hibernate)..."); List<String> entityTypes = EMFUtil.getEntityTypes(packages, providedEntities); if (entityTypes.isEmpty()) { Log.info("Didn't find JPA entities, canceling JPA/Hibernate setup!"); return; } Properties props = EMFUtil.hibernateProperties(); Msc.logSection("Hibernate properties:"); Msc.logProperties(props); Msc.logSection("Starting Hibernate:"); CustomHibernatePersistenceProvider provider = new CustomHibernatePersistenceProvider(dataSource, entityTypes); EntityManagerFactory emf = createEMF(props, provider); emf(emf); Msc.logSection("JPA (Hibernate) is ready."); }
private static List<String> scanClasses(ScanParams params) { String[] pkgs = params.in(); String rootPackage = ClasspathUtil.getRootPackage(); if (U.isEmpty(pkgs)) { pkgs = rootPackage != null ? new String[]{rootPackage} : new String[]{""}; } long startingAt = U.time(); String regex = params.matching(); Pattern pattern = U.notEmpty(regex) ? Pattern.compile(regex) : null; if (regex != null) { Log.info("Scanning classpath", "!annotated", Msc.annotations(params.annotated()), "!packages", Arrays.toString(pkgs), "!matching", regex); } else { Log.info("Scanning classpath", "!annotated", Msc.annotations(params.annotated()), "!packages", Arrays.toString(pkgs)); } Set<String> classpath = U.notEmpty(params.classpath()) ? U.set(params.classpath()) : ClasspathUtil.getClasspath(); AtomicInteger searched = new AtomicInteger(); Set<String> classes = U.set(); for (String pkg : pkgs) { classes.addAll(retrieveClasses(classpath, pkg, params.annotated(), params.bytecodeFilter(), pattern, params.classLoader(), searched)); } List<String> classList = U.list(classes); long timeMs = U.time() - startingAt; Log.info("Finished classpath scan", "time", Msc.maybeMasked(timeMs) + "ms", "searched", searched.get(), "!found", Msc.classNames(classList)); return classList; }
@SuppressWarnings("unchecked") public static <T> Map<String, T> protectSensitiveInfo(Map<String, T> data, T replacement) { Map<String, T> copy = U.map(); for (Map.Entry<String, T> e : data.entrySet()) { T value = e.getValue(); String key = e.getKey().toLowerCase(); if (value instanceof Map<?, ?>) { value = (T) protectSensitiveInfo((Map<String, T>) value, replacement); } else if (sensitiveKey(key)) { value = replacement; } copy.put(e.getKey(), value); } return copy; }
public static String urlWithProtocol(String url) { if (url.startsWith("http://") || url.startsWith("https://")) { return url; } else { return Msc.http() + "://" + url; } }
public static String errorMsg(Throwable error) { return getErrorCodeAndMsg(error).msg(); }
public static Object deserialize(ByteBuffer buf) { int len = buf.getInt(); byte[] bytes = new byte[len]; buf.get(bytes); return deserialize(bytes); }