# V8 API: browseAsync returns null values

**URL:** <https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194>\
**Category:** Module Development\
**Tags:** ignition80\
**Created:** [August 6, 2019, 1:28pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194 "2019-08-06T13:28:04Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 1:28pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/1 "2019-08-06T13:28:04Z")

</div>

I’m attempting to find tagpaths in one of my tagproviders. With this code.

```auto
public void setup(GatewayContext gatewayContext) {
    	try {
    		provider=TagPathParser.parseSafe("[default]");
    		 CompletableFuture<Results<NodeDescription>>node=context.getTagManager().getTagProvider("default").browseAsync(provider,bfilter.setRecursive(true));
    		Results <NodeDescription> nodeResult=node.get();
    		Collection<NodeDescription> nodeCollection=nodeResult.getResults();
    		Object[] nodenames=nodeCollection.toArray();
    		
    	}catch(Exception e){
                logger.info(Arrays.toString(nodenames));
    		logger.info("nodenames is: " + nodenames);
    		logger.info("nodeResult is: " + nodeResult);
    		logger.info("nodeCollection is: " + nodeCollection);
    	}
    }

```

My results from browseAsync are all null.

```auto
INFO | jvm 1 | 2019/08/06 09:19:33 | I [t.d.c.GatewayHook] [13:19:33]: null
INFO | jvm 1 | 2019/08/06 09:19:33 | I [t.d.c.GatewayHook] [13:19:33]: nodenames is: null 
INFO | jvm 1 | 2019/08/06 09:19:33 | I [t.d.c.GatewayHook] [13:19:33]: nodeResult is: null 
INFO | jvm 1 | 2019/08/06 09:19:33 | I [t.d.c.GatewayHook] [13:19:33]: nodeCollection is: null

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 6, 2019, 1:39pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/2 "2019-08-06T13:39:07Z")

</div>

What’s the exception?

Btw, you’ve written your code such that you wouldn’t print anything if it succeeded.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 6, 2019, 1:40pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/3 "2019-08-06T13:40:33Z")

</div>

Ah, and doing this during `setup` in your hook might be too early for the tag manager to be ready to use…

---

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 2:12pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/4 "2019-08-06T14:12:41Z")

</div>

So I’ve move this to the startup(), but I get the same result.

```auto
try {
    		provider=TagPathParser.parseSafe("[default]");
    		node=context.getTagManager().getTagProvider("default").browseAsync(provider,bfilter.setRecursive(true));
    		nodeResult=node.get();
    		nodeCollection=nodeResult.getResults();
    		nodenames=nodeCollection.toArray();
    		logger.info(Arrays.toString(nodenames));
    		logger.info("nodenames is: " + nodenames);
    		logger.info("nodeResult is: " + nodeResult);
    		logger.info("nodeCollection is: " + nodeCollection);
    		
    	}catch(Exception e){
    		logger.info("Exception triggered");
    		logger.info(Arrays.toString(nodenames));
    		logger.info("nodenames is: " + nodenames);
    		logger.info("nodeResult is: " + nodeResult);
    		logger.info("nodeCollection is: " + nodeCollection);
    	}

```

And I don’t get any Exception message from the wrapper file, but it seems to print what’s inside the catch statement anyway.

```auto
INFO | jvm 1 | 2019/08/06 10:07:04 | I [g.ModuleManager] [14:07:04]: Starting up module 'tag.database.connection.TagDBV8' v1.0.0 (b0)... module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:07:04 | I [t.d.c.GatewayHook] [14:07:04]: Exception triggered module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:07:04 | I [t.d.c.GatewayHook] [14:07:04]: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:07:04 | I [t.d.c.GatewayHook] [14:07:04]: nodenames is: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:07:04 | I [t.d.c.GatewayHook] [14:07:04]: nodeResult is: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:07:04 | I [t.d.c.GatewayHook] [14:07:04]: nodeCollection is: null module-name=TagDBV8 Ignition Module

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 6, 2019, 2:15pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/5 "2019-08-06T14:15:40Z")

</div>

You’re catching the exception, you need to print it out yourself.

---

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 2:24pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/6 "2019-08-06T14:24:36Z")

</div>

Whoops. My bad. It’s a NullPointerException:

```auto
INFO | jvm 1 | 2019/08/06 10:22:11 | I [t.d.c.GatewayHook] [14:22:11]: java.lang.NullPointerException module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:22:11 | I [t.d.c.GatewayHook] [14:22:11]: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:22:11 | I [t.d.c.GatewayHook] [14:22:11]: nodenames is: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:22:11 | I [t.d.c.GatewayHook] [14:22:11]: nodeResult is: null module-name=TagDBV8 Ignition Module
INFO | jvm 1 | 2019/08/06 10:22:11 | I [t.d.c.GatewayHook] [14:22:11]: nodeCollection is: null module-name=TagDBV8 Ignition Module

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 6, 2019, 2:27pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/7 "2019-08-06T14:27:50Z")

</div>

> [@fyousuf](#):
>
> context.getTagManager().getTagProvider("default")

Is this returning null?

---

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 2:37pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/8 "2019-08-06T14:37:39Z")

</div>

It seems so:

```auto
}catch(Exception e){
    logger.info(e);
    logger.info(context.getTagManager().getTagProvider("default"));
}

```

faults the module and returns:

```auto
INFO | jvm 1 | 2019/08/06 10:34:13 | java.lang.NullPointerException: null
INFO | jvm 1 | 2019/08/06 10:34:13 | at tag.database.connection.GatewayHook.startup(GatewayHook.java:68)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.startup(ModuleManagerImpl.java:2349)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1166)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:733)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:905)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:695)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1851)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1801)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:813)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:849)
INFO | jvm 1 | 2019/08/06 10:34:13 | at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:518)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
INFO | jvm 1 | 2019/08/06 10:34:13 | at java.base/java.lang.Thread.run(Unknown Source)

```

---

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 4:31pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/9 "2019-08-06T16:31:20Z")

</div>

I made some changes to my GatewayContext and now

```auto
logger.info(context.getTagManager().getTagProvider("default"));

```

returns

```auto
com.inductiveautomation.ignition.gateway.tags.TagProviderImpl@4722edc2

```

---

<div class="post-metadata">

**Author:** ![fyousuf](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@fyousuf](https://forum.inductiveautomation.com/u/fyousuf)\
**Post date:** [August 6, 2019, 7:14pm UTC](https://forum.inductiveautomation.com/t/v8-api-browseasync-returns-null-values/27194/10 "2019-08-06T19:14:49Z")

</div>

It seems now the only object returning null is my BrowseFilter (bfilter). Are there any examples that show how to correctly configure a BrowseFilter?
