@SuppressWarnings({"unchecked", "rawtypes"}) @Override public <T, SpecT extends AbstractBrooklynObjectSpec<? extends T, SpecT>> SpecT createCatalogSpec( CatalogItem<T, SpecT> item, Set<String> encounteredTypes) { // Ignore old-style java type catalog items if (item.getPlanYaml() == null) { throw new PlanNotRecognizedException("Old style catalog item " + item + " not supported."); } if (encounteredTypes.contains(item.getSymbolicName())) { throw new IllegalStateException( "Already encountered types " + encounteredTypes + " must not contain catalog item being resolver " + item.getSymbolicName()); } // Not really clear what should happen to the top-level attributes, ignored until a good use // case appears. return (SpecT) CampCatalogUtils.createSpec(mgmt, (CatalogItem) item, encounteredTypes); }