You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2021/08/08 10:27:42 UTC
[felix-dev] branch FELIX-6442 updated: FELIX-6442 : NPE when
generating ServiceReferenceDTOs
This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch FELIX-6442
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/FELIX-6442 by this push:
new 72c9f17 FELIX-6442 : NPE when generating ServiceReferenceDTOs
72c9f17 is described below
commit 72c9f17d66dda12ba591840016f05bd4ba1d5622
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Sun Aug 8 12:27:35 2021 +0200
FELIX-6442 : NPE when generating ServiceReferenceDTOs
---
.../org/apache/felix/framework/DTOFactory.java | 35 ++++++++++++++--------
1 file changed, 22 insertions(+), 13 deletions(-)
diff --git a/framework/src/main/java/org/apache/felix/framework/DTOFactory.java b/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
index 7d38e40..2133e61 100644
--- a/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
+++ b/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
@@ -18,6 +18,15 @@
*/
package org.apache.felix.framework;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.osgi.dto.DTO;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -53,15 +62,6 @@ import org.osgi.resource.dto.RequirementDTO;
import org.osgi.resource.dto.RequirementRefDTO;
import org.osgi.resource.dto.WireDTO;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
/**
* Creates various DTOs provided by the core framework.
*/
@@ -335,18 +335,27 @@ public class DTOFactory
if (svcs == null)
return new ServiceReferenceDTO[0];
- ServiceReferenceDTO[] dtos = new ServiceReferenceDTO[svcs.length];
+ List<ServiceReferenceDTO> dtos = new ArrayList<>();
for (int i=0; i < svcs.length; i++)
{
- dtos[i] = createServiceReferenceDTO(svcs[i]);
+ ServiceReferenceDTO dto = createServiceReferenceDTO(svcs[i]);
+ if ( dto != null )
+ {
+ dtos.add(dto);
+ }
}
- return dtos;
+ return dtos.toArray(new ServiceReferenceDTO[dtos.size()]);
}
private static ServiceReferenceDTO createServiceReferenceDTO(ServiceReference<?> svc)
{
+ final Bundle bundle = svc.getBundle();
+ if ( bundle == null )
+ {
+ return null;
+ }
ServiceReferenceDTO dto = new ServiceReferenceDTO();
- dto.bundle = svc.getBundle().getBundleId();
+ dto.bundle = bundle.getBundleId();
dto.id = (Long) svc.getProperty(Constants.SERVICE_ID);
Map<String, Object> props = new HashMap<String, Object>();
for (String key : svc.getPropertyKeys())