+ RESOURCES {
+ @Override
+ public AssetInfo getAssetInfo(final Resource resource) throws IOException {
+ return OBJ_MAPPER.readValue(resource.getInputStream(), ResourceAssetInfo.class);
+ }
+
+ @Override
+ public AssetInfo getAssetInfo(final File file) throws IOException {
+ return OBJ_MAPPER.readValue(file, ResourceAssetInfo.class);
+ }
+
+ @Override
+ public Metadata getMetadata(final Resource resource) throws IOException {
+ return OBJ_MAPPER.readValue(resource.getInputStream(), ResourceMetadata.class);
+ }
+
+ @Override
+ public Metadata getMetadata(final File file) throws IOException {
+ return OBJ_MAPPER.readValue(file, ResourceMetadata.class);
+ }
+
+ },
+ SERVICES {
+ @Override
+ public AssetInfo getAssetInfo(final Resource resource) throws IOException {
+ return OBJ_MAPPER.readValue(resource.getInputStream(), ServiceAssetInfo.class);
+ }
+
+ @Override
+ public AssetInfo getAssetInfo(final File file) throws IOException {
+ return OBJ_MAPPER.readValue(file, ServiceAssetInfo.class);
+ }
+
+ @Override
+ public Metadata getMetadata(final Resource resource) throws IOException {
+ return OBJ_MAPPER.readValue(resource.getInputStream(), ServiceMetadata.class);
+ }
+
+ @Override
+ public Metadata getMetadata(final File file) throws IOException {
+ return OBJ_MAPPER.readValue(file, ServiceMetadata.class);
+ }
+
+ };
+
+ private static final ObjectMapper OBJ_MAPPER =
+ new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+
+ public abstract AssetInfo getAssetInfo(final Resource resource) throws IOException;
+
+ public abstract AssetInfo getAssetInfo(final File file) throws IOException;
+
+ public abstract Metadata getMetadata(final Resource resource) throws IOException;
+
+ public abstract Metadata getMetadata(final File file) throws IOException;
+
+ public String getToscaModelUrl(final String filename) {
+ return CATALOG_URL + FORWARD_SLASH + this.toString().toLowerCase() + FORWARD_SLASH + filename + "/toscaModel";
+ }
+
+ public AssetInfo getDefaultAssetInfo(final String filename) {
+ AssetInfo defaultValue = null;
+
+ if (this.equals(RESOURCES)) {
+ defaultValue = new ResourceAssetInfo().subCategory("Network Service");
+ } else if (this.equals(SERVICES)) {
+ defaultValue = new ServiceAssetInfo().distributionStatus("DISTRIBUTED");
+ } else {
+ defaultValue = new AssetInfo();
+ }
+
+ return defaultValue.uuid(filename).invariantUuid(filename).name(filename).version("1.0")
+ .toscaModelUrl(getToscaModelUrl(filename)).category("Generic").lifecycleState("CERTIFIED")
+ .lastUpdaterUserId("SDC_SIMULATOR");
+ }