<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic getMetadataValue() return null on &amp;quot;shared link already exists&amp;quot;, JAVA SDK in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/getMetadataValue-return-null-on-quot-shared-link-already-exists/m-p/721464#M31894</link>
    <description>&lt;P&gt;&lt;BR /&gt;I'm trying to implement a function where I can get shared links to dropbox folders via API.&lt;BR /&gt;I was able to generate the shared link but if the link has been generated, the next call on the same folder will return this exception:&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;"CreateSharedLinkWithSettingsErrorException"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt;I tried to handle it so that I could retrieve the pre-existed shared link/URL but struggling on implementation as I got unxepcted null values, please tell me what I should change in my code, down below is my function in full:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;SharedLinkMetadata sharedLinkMetadata = error.getSharedLinkAlreadyExistsValue().getMetadataValue();&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"error.getSharedLinkAlreadyExistsValue()" just return null:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt; // function starts from here 

public Optional&amp;lt;String&amp;gt; getSharedLink(String path) throws DbxException {
try {
SharedLinkSettings.Builder builder = SharedLinkSettings.newBuilder();
builder.withRequestedVisibility(RequestedVisibility.PUBLIC);
SharedLinkSettings settings = builder.build();
DbxUserSharingRequests sharingRequests = dbxClient.sharing();

SharedLinkMetadata asd = sharingRequests.createSharedLinkWithSettings(path, settings);
return Optional.of(asd.getUrl());
}
catch (DbxException e) {
if (e instanceof CreateSharedLinkWithSettingsErrorException){
CreateSharedLinkWithSettingsErrorException createSharedLinkException = (CreateSharedLinkWithSettingsErrorException) e;
CreateSharedLinkWithSettingsError error = createSharedLinkException.errorValue;
if (error.isSharedLinkAlreadyExists()) {
SharedLinkMetadata sharedLinkMetadata = error.getSharedLinkAlreadyExistsValue().getMetadataValue();
return Optional.of(sharedLinkMetadata.getUrl());
}
}
System.out.println(e.getMessage());
return Optional.empty();
}

}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;here's the return objects for Exception e:&lt;BR /&gt;&lt;BR /&gt;com.dropbox.core.v2.sharing.CreateSharedLinkWithSettingsErrorException: Exception in 2/sharing/create_shared_link_with_settings: {".tag":"shared_link_already_exists","shared_link_already_exists":null}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;box.core.v2.sharing.CreateSharedLinkWithSettingsError.getSharedLinkAlreadyExistsValue()" is null] with root cause

java.lang.NullPointerException: Cannot invoke "com.dropbox.core.v2.sharing.SharedLinkAlreadyExistsMetadata.getMetadataValue()" because the return value of "com.dropbox.core.v2.sharing.CreateSharedLinkWithSettingsError.getSharedLinkAlreadyExistsValue()" is null
	at com.powers.customers.service.DropboxClientService.getSharedLink(DropboxClientService.java:67) ~[classes/:na]
	at com.powers.customers.controller.DropboxWebhookController.getSharedLink(DropboxWebhookController.java:56) ~[classes/:na]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.22.jar:5.3.22]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1070) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
​&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 14 Oct 2023 22:01:44 GMT</pubDate>
    <dc:creator>Thang2000</dc:creator>
    <dc:date>2023-10-14T22:01:44Z</dc:date>
    <item>
      <title>getMetadataValue() return null on "shared link already exists", JAVA SDK</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/getMetadataValue-return-null-on-quot-shared-link-already-exists/m-p/721464#M31894</link>
      <description>&lt;P&gt;&lt;BR /&gt;I'm trying to implement a function where I can get shared links to dropbox folders via API.&lt;BR /&gt;I was able to generate the shared link but if the link has been generated, the next call on the same folder will return this exception:&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;"CreateSharedLinkWithSettingsErrorException"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt;I tried to handle it so that I could retrieve the pre-existed shared link/URL but struggling on implementation as I got unxepcted null values, please tell me what I should change in my code, down below is my function in full:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;SharedLinkMetadata sharedLinkMetadata = error.getSharedLinkAlreadyExistsValue().getMetadataValue();&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"error.getSharedLinkAlreadyExistsValue()" just return null:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt; // function starts from here 

public Optional&amp;lt;String&amp;gt; getSharedLink(String path) throws DbxException {
try {
SharedLinkSettings.Builder builder = SharedLinkSettings.newBuilder();
builder.withRequestedVisibility(RequestedVisibility.PUBLIC);
SharedLinkSettings settings = builder.build();
DbxUserSharingRequests sharingRequests = dbxClient.sharing();

SharedLinkMetadata asd = sharingRequests.createSharedLinkWithSettings(path, settings);
return Optional.of(asd.getUrl());
}
catch (DbxException e) {
if (e instanceof CreateSharedLinkWithSettingsErrorException){
CreateSharedLinkWithSettingsErrorException createSharedLinkException = (CreateSharedLinkWithSettingsErrorException) e;
CreateSharedLinkWithSettingsError error = createSharedLinkException.errorValue;
if (error.isSharedLinkAlreadyExists()) {
SharedLinkMetadata sharedLinkMetadata = error.getSharedLinkAlreadyExistsValue().getMetadataValue();
return Optional.of(sharedLinkMetadata.getUrl());
}
}
System.out.println(e.getMessage());
return Optional.empty();
}

}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;here's the return objects for Exception e:&lt;BR /&gt;&lt;BR /&gt;com.dropbox.core.v2.sharing.CreateSharedLinkWithSettingsErrorException: Exception in 2/sharing/create_shared_link_with_settings: {".tag":"shared_link_already_exists","shared_link_already_exists":null}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;box.core.v2.sharing.CreateSharedLinkWithSettingsError.getSharedLinkAlreadyExistsValue()" is null] with root cause

java.lang.NullPointerException: Cannot invoke "com.dropbox.core.v2.sharing.SharedLinkAlreadyExistsMetadata.getMetadataValue()" because the return value of "com.dropbox.core.v2.sharing.CreateSharedLinkWithSettingsError.getSharedLinkAlreadyExistsValue()" is null
	at com.powers.customers.service.DropboxClientService.getSharedLink(DropboxClientService.java:67) ~[classes/:na]
	at com.powers.customers.controller.DropboxWebhookController.getSharedLink(DropboxWebhookController.java:56) ~[classes/:na]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.22.jar:5.3.22]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1070) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.22.jar:5.3.22]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
​&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 14 Oct 2023 22:01:44 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/getMetadataValue-return-null-on-quot-shared-link-already-exists/m-p/721464#M31894</guid>
      <dc:creator>Thang2000</dc:creator>
      <dc:date>2023-10-14T22:01:44Z</dc:date>
    </item>
    <item>
      <title>Re: getMetadataValue() return null on "shared link already exists", JAVA SDK</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/getMetadataValue-return-null-on-quot-shared-link-already-exists/m-p/721571#M31895</link>
      <description>&lt;P&gt;Hi &lt;a href="https://www.dropboxforum.com/t5/user/viewprofilepage/user-id/1710958"&gt;@Thang2000&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;Your mistake is that you're expecting Dropbox always returns data for link metadata (i.e. getSharedLinkAlreadyExistsValue() returns valid, non null, value). Unfortunately, returning valid value is something possible and likely, but not mandatory (i.e. it's absolutely normal, data for the existing link to be unavailable immediately in the exception)! If you take a look on "&lt;A href="https://dropbox.github.io/dropbox-sdk-java/api-docs/v5.4.3/com/dropbox/core/v2/sharing/CreateSharedLinkWithSettingsError.html#getSharedLinkAlreadyExistsValue()" target="_blank" rel="noopener"&gt;getSharedLinkAlreadyExistsValue&lt;/A&gt;"s documentation, there is:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;... You can call DbxUserSharingRequests.listSharedLinks(com.dropbox.core.v2.sharing.ListSharedLinksArg) to get the existing link, or use the provided metadata &lt;FONT color="#FF0000"&gt;&lt;U&gt;&lt;STRONG&gt;if it is returned&lt;/STRONG&gt;&lt;/U&gt;&lt;/FONT&gt;. ...&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Emphasize of "if it is returned"! So, you have to check always for non null value before further processing. If value is null, as mentioned in documentation, explicit requesting the file/folder link metadata is applicable (the same as if in advance you know that link to the target already exists). &lt;img class="lia-deferred-image lia-image-emoji" src="https://www.dropboxforum.com/html/@41457EF40051AFF130FDBFE21B496926/emoticons/1f609.png" alt=":winking_face:" title=":winking_face:" /&gt; Don't forget to set the target path and denote that you want direct link (otherwise you will need to sort out lot of returned links yourself, not just the targets one).&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;</description>
      <pubDate>Sun, 15 Oct 2023 22:49:52 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/getMetadataValue-return-null-on-quot-shared-link-already-exists/m-p/721571#M31895</guid>
      <dc:creator>Здравко</dc:creator>
      <dc:date>2023-10-15T22:49:52Z</dc:date>
    </item>
  </channel>
</rss>

