@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()]); }
@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; }
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()); } } } }
@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 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; }