@Override public void write(ObjectDataOutput out, Library xLibrary) throws IOException { super.writeEntity(out, xLibrary); out.writeUTF(xLibrary.getName()); out.writeUTF(xLibrary.getFileName()); out.writeUTF(xLibrary.getDescription()); out.writeBoolean(xLibrary.isEnabled()); out.writeInt(xLibrary.getFunctions().size()); for (Function xf: xLibrary.getFunctions()) { out.writeObject(xf); } }
@Override public Object process(Entry<String, Library> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() == null) { String name = entry.getKey(); Library library = new Library(getVersion(), new Date(), getAdmin(), name, fileName, description, true); entry.setValue(library); auditEntity(AuditType.create, library); return library; } return null; }
@Override public Object process(Entry<String, Library> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Library library = entry.getValue(); if (library.getVersion() == getVersion()) { entry.setValue(null); auditEntity(AuditType.delete, library); return library; } else { // throw ex ? logger.warn("process; outdated library version: {}; entry version: {}; process terminated", getVersion(), entry.getValue().getVersion()); } } return null; }
@Override public Object process(Entry<String, Library> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Function xdf = buildFunction(); if (xdf != null) { Library xdl = entry.getValue(); if (action == Action.remove) { // xdl.getFunctions().remove(xdf); } else { xdl.getFunctions().add(xdf); } xdl.updateVersion(getAdmin()); entry.setValue(xdl); auditEntity(AuditType.update, xdl); return xdf; } } return null; }
@Override public Library read(ObjectDataInput in) throws IOException { Object[] entity = super.readEntity(in); Library xLibrary = new Library( (int) entity[0], (Date) entity[1], (String) entity[2], in.readUTF(), in.readUTF(), in.readUTF(), in.readBoolean()); int cnt = in.readInt(); for (int i=0; i < cnt; i++) { Function xf = in.readObject(); xLibrary.getFunctions().add(xf); } return xLibrary; }
trigger.getLibrary()); } else { if (!library.isEnabled()) { logger.info("createJavaTrigger; library {} disabled, trigger registration failed", trigger.getLibrary()); addURL(FileUtils.path2url(library.getFileName())); tc = Class.forName(trigger.getClassName()); introspectLibrary(library.getFileName()); } catch (ClassNotFoundException | IOException ex2) { logger.error("createJavaTrigger.error; ", ex2);
@ManagedAttribute(description="Returns Library functions") public String[] getDeclaredFunctions() { Library library = getEntity(); List<String> result = new ArrayList<>(library.getFunctions().size()); for (Function func: library.getFunctions()) { result.add(func.toString()); } Collections.sort(result); return result.toArray(new String[result.size()]); }
@SuppressWarnings("unchecked") @Override protected Map<String, Library> loadEntities() { Collection<Library> libs = (Collection<Library>) cfg.getEntities(Library.class); Map<String, Library> result = new HashMap<String, Library>(libs.size()); for (Library lib: libs) { result.put(lib.getName(), lib); } return result; }
@ManagedAttribute(description="Returns Library description") public String getDescription() { return getEntity().getDescription(); }
@ManagedAttribute(description="Returns Library file name") public String getFileName() { return getEntity().getFileName(); }
static void registerExtensions(Configuration config, Collection<Library> libraries) { for (Library lib: libraries) { for (Function func: lib.getFunctions()) { try { ExtensionFunctionDefinition efd = new StaticFunctionExtension(func, config); logger.trace("registerExtensions; funtion {} registered as {}", func.toString(), efd.getFunctionQName()); config.registerExtensionFunction(efd); } catch (Exception ex) { logger.warn("registerExtensions; error registering function {}: {}; skipped", func.toString(), ex.getMessage()); } } } }
private Library getLibrary(String library) { Collection<Library> libraries = repo.getLibraries(); for (Library xLib: libraries) { if (library.equals(xLib.getName())) { return xLib; } } logger.trace("getLibrary; libraries: {}", libraries); return null; }
@ManagedOperation(description="Removes an existing Extension Library") @ManagedOperationParameters({@ManagedOperationParameter(name = "name", description = "Library name to delete")}) public boolean deleteLibrary(String name) { logger.trace("deleteLibrary.enter; name: {}", name); Library library = entityCache.get(name); if (library != null) { Object result = entityCache.executeOnKey(name, new LibraryRemover(library.getVersion(), getCurrentUser())); library = (Library) result; } logger.trace("deleteLibrary.exit; library deleted: {}", library); return library != null; }