From 90c460aa3c23c9a12885894b4664f7c742c8d29f Mon Sep 17 00:00:00 2001 From: kooper Date: Tue, 5 Mar 2019 13:31:45 +0000 Subject: Parse Tosca.meta file Change-Id: I50521fb62999322c99b39024097ab5729f3c1580 Issue-ID: SDC-2151 Signed-off-by: kooper --- .../sdc/tosca/csar/OnboardingToscaMetadata.java | 102 +++++++++++++++++++++ .../openecomp/sdc/tosca/csar/ToscaMetadata.java | 46 ++++++++++ 2 files changed, 148 insertions(+) create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java (limited to 'openecomp-be/lib/openecomp-tosca-lib/src/main/java') diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java new file mode 100644 index 0000000000..b4d7f84ca4 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.tosca.csar; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import java.io.InputStream; +import java.io.IOException; +import org.apache.commons.io.IOUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; + +public class OnboardingToscaMetadata implements ToscaMetadata{ + + private Map metaEntries; + private List errors; + + private OnboardingToscaMetadata(){ + metaEntries = new HashMap<>(); + errors = new ArrayList<>(); + } + + /** + * Method parses input stream of meta file, only block_0 is parsed, the rest of metadata ignored + * @param st meta file input stream + * @return OnboardingToscaMetadata instance + * @throws IOException + */ + public static ToscaMetadata parseToscaMetadataFile(InputStream st) throws IOException { + OnboardingToscaMetadata meta = new OnboardingToscaMetadata(); + List metadataLines = IOUtils.readLines(st, "utf-8"); + for (String line : metadataLines) { + line = line.trim(); + if (line.isEmpty()) { + return meta; + } + String[] entry = line.split(SEPERATOR_MF_ATTRIBUTE); + //No empty keys allowed, no empty values allowed + if (entry.length < 2 || entry[0].isEmpty()) { + meta.errors.add(new ErrorMessage(ErrorLevel.ERROR, getErrorWithParameters( + Messages.METADATA_INVALID_ENTRY_DEFINITIONS.getErrorMessage(), line))); + //want to get all error lines in meta file block_0, no breaking loop + } else { + meta.metaEntries.put(entry[0].trim(), entry[1].trim()); + } + } + + if (!meta.metaEntries.containsKey(TOSCA_META_ENTRY_DEFINITIONS)) { + meta.errors.add(new ErrorMessage(ErrorLevel.ERROR, getErrorWithParameters( + Messages.METADATA_NO_ENTRY_DEFINITIONS.getErrorMessage()))); + } + return meta; + } + + @Override public boolean isValid(){ + return errors.isEmpty(); + } + + @Override + public List getErrors() { + return ImmutableList.copyOf(errors); + } + + + @Override + public Map getMetaEntries() { + if (!isValid()){ + return Collections.emptyMap(); + } + return ImmutableMap.copyOf(metaEntries); + } +} + diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java new file mode 100644 index 0000000000..a26e5195a5 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2019, Nordix Foundation. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.tosca.csar; + +import org.openecomp.sdc.datatypes.error.ErrorMessage; + +import java.util.List; +import java.util.Map; + +public interface ToscaMetadata { + /** + * checks if metadata file is valid + * @return + */ + boolean isValid(); + + /** + * List of errors occured during manifest parsing + * @return + */ + List getErrors(); + + /** + * Metadata entries of block_0 + * @return + */ + Map getMetaEntries(); +} -- cgit 1.2.3-korg