Github user neykov commented on a diff in the pull request:

    https://github.com/apache/incubator-brooklyn/pull/617#discussion_r30711175
  
    --- Diff: 
core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java ---
    @@ -750,7 +780,37 @@ private String setFromItemIfUnset(String oldValue, 
Map<?,?> item, String fieldAt
             return oldValue;
         }
     
    +    private Collection<CatalogItemDtoAbstract<?, ?>> 
scanAnnotationsFromLocal(ManagementContext mgmt) {
    +        CatalogDto dto = CatalogDto.newNamedInstance("Local Scanned 
Catalog", "All annotated Brooklyn entities detected in the classpath", 
"scanning-local-classpath");
    +        return scanAnnotationsInternal(mgmt, new CatalogDo(dto));
    +    }
         
    +    private Collection<CatalogItemDtoAbstract<?, ?>> 
scanAnnotationsFromBundles(ManagementContext mgmt, Collection<CatalogBundle> 
libraries) {
    +        String[] urls = null;
    +        CatalogDto dto = CatalogDto.newNamedInstance("Bundles Scanned 
Catalog", "All annotated Brooklyn entities detected in the classpath", 
"scanning-bundles-classpath-"+libraries.hashCode());
    +        urls = new String[libraries.size()];
    +        int i=0;
    +        for (CatalogBundle b: libraries)
    +            urls[i++] = b.getUrl();
    +            
    +        CatalogDo subCatalog = new CatalogDo(dto);
    +        subCatalog.addToClasspath(urls);
    --- End diff --
    
    Made a quick test - tried scanning `brooklyn-test-osgi-entities.jar` (after 
annotating `SimpleEntity`). Fails with
    
    ```
    2015-05-20 17:46:39,482 ERROR Error loading catalog item 
'brooklyn.catalog.internal.CatalogItemDo[CatalogEntityItemDto[brooklyn.osgi.tests.SimpleEntity:0.0.0.SNAPSHOT/Tomcat
 Server]]': java.lang.IllegalStateException: Error creating class 
brooklyn.entity.proxying.EntitySpec brooklyn.osgi.tests.SimpleEntity: 
java.lang.IllegalStateException: Unable to load 
brooklyn.osgi.tests.SimpleEntity from []: Invalid class: 
brooklyn.osgi.tests.SimpleEntity: java.lang.ClassNotFoundException: 
brooklyn.osgi.tests.SimpleEntity
    ```
    with the yaml
    
    ```
    brooklyn.catalog:
    - libraries:
      - 
file:///.../core/src/test/resources/brooklyn/osgi/brooklyn-test-osgi-entities.jar
      scanJavaAnnotations: true
    ```
    
    Worth adding it to the PR. But no classpath:// protocol supported by the 
catalog CL, as used in other tests.
    
    If there's no explicit parent class loader (as in our case) only the 
bootstrap class loader will be consulted which doesn't have access to the app 
classes.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to