public static OffloaderDefinition getOffloaderDefinition(String narPath) throws IOException { try (NarClassLoader ncl = NarClassLoader.getFromArchive(new File(narPath), Collections.emptySet())) { String configStr = ncl.getServiceDefinition(PULSAR_OFFLOADER_SERVICE_NAME); return ObjectMapperFactory.getThreadLocalYaml().readValue(configStr, OffloaderDefinition.class); } }
String configStr = ncl.getServiceDefinition(PULSAR_OFFLOADER_SERVICE_NAME); OffloaderDefinition conf = ObjectMapperFactory.getThreadLocalYaml() .readValue(configStr, OffloaderDefinition.class); if (StringUtils.isEmpty(conf.getOffloaderFactoryClass())) {
public static OffloaderDefinition getOffloaderDefinition(String narPath) throws IOException { try (NarClassLoader ncl = NarClassLoader.getFromArchive(new File(narPath), Collections.emptySet())) { String configStr = ncl.getServiceDefinition(PULSAR_OFFLOADER_SERVICE_NAME); return ObjectMapperFactory.getThreadLocalYaml().readValue(configStr, OffloaderDefinition.class); } }
public static ConnectorDefinition getConnectorDefinition(String narPath) throws IOException { try (NarClassLoader ncl = NarClassLoader.getFromArchive(new File(narPath), Collections.emptySet())) { String configStr = ncl.getServiceDefinition(PULSAR_IO_SERVICE_NAME); return ObjectMapperFactory.getThreadLocalYaml().readValue(configStr, ConnectorDefinition.class); } }
String configStr = ncl.getServiceDefinition(PULSAR_OFFLOADER_SERVICE_NAME); OffloaderDefinition conf = ObjectMapperFactory.getThreadLocalYaml() .readValue(configStr, OffloaderDefinition.class); if (StringUtils.isEmpty(conf.getOffloaderFactoryClass())) {
/** * Extract the Pulsar IO Sink class from a connector archive. */ public static String getIOSinkClass(String narPath) throws IOException { try (NarClassLoader ncl = NarClassLoader.getFromArchive(new File(narPath), Collections.emptySet())) { String configStr = ncl.getServiceDefinition(PULSAR_IO_SERVICE_NAME); ConnectorDefinition conf = ObjectMapperFactory.getThreadLocalYaml().readValue(configStr, ConnectorDefinition.class); if (StringUtils.isEmpty(conf.getSinkClass())) { throw new IOException( String.format("The '%s' connector does not provide a sink implementation", conf.getName())); } try { // Try to load source class and check it implements Sink interface Object instance = ncl.loadClass(conf.getSinkClass()).newInstance(); if (!(instance instanceof Sink)) { throw new IOException( "Class " + conf.getSinkClass() + " does not implement interface " + Sink.class.getName()); } } catch (Throwable t) { Exceptions.rethrowIOException(t); } return conf.getSinkClass(); } }
/** * Extract the Pulsar IO Source class from a connector archive. */ public static String getIOSourceClass(String narPath) throws IOException { try (NarClassLoader ncl = NarClassLoader.getFromArchive(new File(narPath), Collections.emptySet())) { String configStr = ncl.getServiceDefinition(PULSAR_IO_SERVICE_NAME); ConnectorDefinition conf = ObjectMapperFactory.getThreadLocalYaml().readValue(configStr, ConnectorDefinition.class); if (StringUtils.isEmpty(conf.getSourceClass())) { throw new IOException( String.format("The '%s' connector does not provide a source implementation", conf.getName())); } try { // Try to load source class and check it implements Source interface Object instance = ncl.loadClass(conf.getSourceClass()).newInstance(); if (!(instance instanceof Source)) { throw new IOException("Class " + conf.getSourceClass() + " does not implement interface " + Source.class.getName()); } } catch (Throwable t) { Exceptions.rethrowIOException(t); } return conf.getSourceClass(); } }