/** * Opens zip entry or plain file and returns its input stream. */ public InputStream openInputStream() { if (inputStream != null) { return inputStream; } if (zipFile != null && zipEntry != null) { try { inputStream = zipFile.getInputStream(zipEntry); return inputStream; } catch (IOException ioex) { throw new FindFileException("Input stream error: '" + zipFile.getName() + "', entry: '" + zipEntry.getName() + "'." , ioex); } } if (file != null) { try { inputStream = new FileInputStream(file); return inputStream; } catch (FileNotFoundException fnfex) { throw new FindFileException("Unable to open: " + file.getAbsolutePath(), fnfex); } } throw new FindFileException("Unable to open stream: " + name()); }
/** * Registers a class consumer that registers only those annotated with {@link DbTable}. * Because of performance purposes, classes are not dynamically loaded; instead, their * file content is examined. */ public void registerAsConsumer(final ClassScanner classScanner) { classScanner.registerEntryConsumer(classPathEntry -> { if (!classPathEntry.isTypeSignatureInUse(DB_TABLE_ANNOTATION_BYTES)) { return; } final Class<?> beanClass; try { beanClass = classPathEntry.loadClass(); } catch (ClassNotFoundException cnfex) { throw new DbOomException("Entry class not found: " + classPathEntry.name(), cnfex); } if (beanClass == null) { return; } final DbTable dbTable = beanClass.getAnnotation(DbTable.class); if (dbTable == null) { return; } if (registerAsEntities) { dbEntityManager.registerEntity(beanClass); } else { dbEntityManager.registerType(beanClass); } }); }
/** * Registers a class consumer that registers only those annotated with {@link DbTable}. * Because of performance purposes, classes are not dynamically loaded; instead, their * file content is examined. */ public void registerAsConsumer(final ClassScanner classScanner) { classScanner.registerEntryConsumer(classPathEntry -> { if (!classPathEntry.isTypeSignatureInUse(DB_TABLE_ANNOTATION_BYTES)) { return; } final Class<?> beanClass; try { beanClass = classPathEntry.loadClass(); } catch (ClassNotFoundException cnfex) { throw new DbOomException("Entry class not found: " + classPathEntry.name(), cnfex); } if (beanClass == null) { return; } final DbTable dbTable = beanClass.getAnnotation(DbTable.class); if (dbTable == null) { return; } if (registerAsEntities) { dbEntityManager.registerEntity(beanClass); } else { dbEntityManager.registerType(beanClass); } }); }
/** * Opens zip entry or plain file and returns its input stream. */ public InputStream openInputStream() { if (inputStream != null) { return inputStream; } if (zipFile != null && zipEntry != null) { try { inputStream = zipFile.getInputStream(zipEntry); return inputStream; } catch (IOException ioex) { throw new FindFileException("Input stream error: '" + zipFile.getName() + "', entry: '" + zipEntry.getName() + "'." , ioex); } } if (file != null) { try { inputStream = new FileInputStream(file); return inputStream; } catch (FileNotFoundException fnfex) { throw new FindFileException("Unable to open: " + file.getAbsolutePath(), fnfex); } } throw new FindFileException("Unable to open stream: " + name()); }
/** * Loads props and properties from the classpath. */ public Props loadFromClasspath(final String... patterns) { ClassScanner.create() .registerEntryConsumer(entryData -> { String usedEncoding = JoddCore.encoding; if (StringUtil.endsWithIgnoreCase(entryData.name(), ".properties")) { usedEncoding = StringPool.ISO_8859_1; } final String encoding = usedEncoding; UncheckedException.runAndWrapException(() -> load(entryData.openInputStream(), encoding)); }) .includeResources(true) .ignoreException(true) .excludeCommonJars() .excludeAllEntries(true) .includeEntries(patterns) .scanDefaultClasspath() .start(); return this; }
/** * If entry name is {@link #acceptEntry(String) accepted} invokes {@link #onEntry(ClassPathEntry)} a callback}. */ protected void scanEntry(final ClassPathEntry classPathEntry) { if (!acceptEntry(classPathEntry.name())) { return; } try { onEntry(classPathEntry); } catch (Exception ex) { throw new FindFileException("Scan entry error: " + classPathEntry, ex); } }
/** * Parses class name that matches madvoc-related names. */ protected void registerAsConsumer(final ClassScanner classScanner) { classScanner.registerEntryConsumer(classPathEntry -> { final String entryName = classPathEntry.name(); if (entryName.endsWith(actionClassSuffix)) { try { acceptActionClass(classPathEntry.loadClass()); } catch (Exception ex) { log.debug("Invalid Madvoc action, ignoring: " + entryName); } } else if (classPathEntry.isTypeSignatureInUse(MADVOC_COMPONENT_ANNOTATION)) { try { acceptMadvocComponentClass(classPathEntry.loadClass()); } catch (Exception ex) { log.debug("Invalid Madvoc component ignoring: {}" + entryName); } } }); }
/** * Loads props and properties from the classpath. */ public Props loadFromClasspath(final String... patterns) { ClassScanner.create() .registerEntryConsumer(entryData -> { String usedEncoding = JoddCore.encoding; if (StringUtil.endsWithIgnoreCase(entryData.name(), ".properties")) { usedEncoding = StringPool.ISO_8859_1; } final String encoding = usedEncoding; UncheckedException.runAndWrapException(() -> load(entryData.openInputStream(), encoding)); }) .includeResources(true) .ignoreException(true) .excludeCommonJars() .excludeAllEntries(true) .includeEntries(patterns) .scanDefaultClasspath() .start(); return this; }
/** * If entry name is {@link #acceptEntry(String) accepted} invokes {@link #onEntry(ClassPathEntry)} a callback}. */ protected void scanEntry(final ClassPathEntry classPathEntry) { if (!acceptEntry(classPathEntry.name())) { return; } try { onEntry(classPathEntry); } catch (Exception ex) { throw new FindFileException("Scan entry error: " + classPathEntry, ex); } }