import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator.config.CategoriesToGenerateNsd;
import org.openecomp.sdc.be.model.Component;
static final String UNSIGNED_CSAR_EXTENSION = "csar";
static final String ETSI_VERSION_METADATA = "ETSI Version";
private static final Logger LOGGER = LoggerFactory.getLogger(EtsiNfvNsCsarEntryGenerator.class);
+ private static final Pattern ETSI_VERSION_PATTERN = Pattern.compile("(\\d+\\.\\d+\\.\\d+)");
private final EtsiNfvNsdCsarGeneratorFactory etsiNfvNsdCsarGeneratorFactory;
public EtsiNfvNsCsarEntryGenerator(final EtsiNfvNsdCsarGeneratorFactory etsiNfvNsdCsarGeneratorFactory) {
private EtsiVersion getComponentEtsiVersion(Component component) {
String etsiVersion = component.getCategorySpecificMetadata().get(ETSI_VERSION_METADATA);
- final String modelName = component.getModel();
- if (etsiVersion == null && modelName.matches(".*\\d+\\.\\d+\\.\\d+.*" )){
- etsiVersion = modelName.replaceAll(".*?(\\d+\\.\\d+\\.\\d+).*", "$1");
+ if (etsiVersion == null) {
+ final String modelName = component.getModel();
+ if (modelName != null) {
+ final Matcher matcher = ETSI_VERSION_PATTERN.matcher(modelName);
+ if (matcher.find()) {
+ etsiVersion = matcher.group(1);
+ }
+ }
}
return EtsiVersion.convertOrNull(etsiVersion);
}
import { Pipe, PipeTransform } from '@angular/core';
-import { DomSanitizer } from '@angular/platform-browser';
+import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
@Pipe({ name: 'safeUrlSanitizer' })
export class SafeUrlSanitizerPipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
- transform(url) {
- return this.sanitizer.bypassSecurityTrustResourceUrl(url);
+ transform(url: string): SafeResourceUrl {
+ if (this.isSafeResourceUrl(url)) {
+ return this.sanitizer.bypassSecurityTrustResourceUrl(url);
+ }
+ return this.sanitizer.bypassSecurityTrustResourceUrl('about:blank');
+ }
+
+ private isSafeResourceUrl(url: string): boolean {
+ if (!url) {
+ return false;
+ }
+ try {
+ const parsed = new URL(url);
+ return parsed.protocol === 'https:' || parsed.protocol === 'http:';
+ } catch (e) {
+ return false;
+ }
}
}
private static final Map<Class<?>, Class<?>> ARRAY_CLASS_MAP;
private static final String CONFIG_REGEX_TPL_OPT_1 = "CONFIG(-\\w*){0,1}(-(%s|%s|%s)){0,1}\\.(%s|%s|%s|%s)$";
private static final String CONFIG_REGEX_TPL_OPT_2 = "CONFIG(.)*\\.(%s|%s|%s|%s)$";
+ private static final Pattern CONFIG_PATTERN_OPT_1;
+ private static final Pattern CONFIG_PATTERN_OPT_2;
+ private static final Pattern COLLECTION_STRING_PATTERN = Pattern.compile("^\\[(.*)\\]$");
+ private static final Pattern VARIABLE_PATTERN = Pattern.compile("^.*\\$\\{(.*)\\}.*");
static {
Map<Class<?>, Class<?>> arrayTypes = new HashMap<>();
arrayTypes.put(Character.class, Character[].class);
arrayTypes.put(String.class, String[].class);
ARRAY_CLASS_MAP = Collections.unmodifiableMap(arrayTypes);
+ CONFIG_PATTERN_OPT_1 = Pattern.compile(String.format(CONFIG_REGEX_TPL_OPT_1, ConfigurationMode.OVERRIDE, ConfigurationMode.MERGE,
+ ConfigurationMode.UNION, ConfigurationType.PROPERTIES.name(), ConfigurationType.XML.name(), ConfigurationType.JSON.name(),
+ ConfigurationType.YAML.name()));
+ CONFIG_PATTERN_OPT_2 = Pattern.compile(String.format(CONFIG_REGEX_TPL_OPT_2, ConfigurationType.PROPERTIES.name(),
+ ConfigurationType.XML.name(), ConfigurationType.JSON.name(), ConfigurationType.YAML.name()));
}
private ConfigurationUtils() {
public static boolean isConfig(String file) {
file = file.toUpperCase().substring(file.lastIndexOf('!') + 1);
file = file.substring(file.lastIndexOf('/') + 1);
- return file.matches(String.format(CONFIG_REGEX_TPL_OPT_1, ConfigurationMode.OVERRIDE, ConfigurationMode.MERGE, ConfigurationMode.UNION,
- ConfigurationType.PROPERTIES.name(), ConfigurationType.XML.name(), ConfigurationType.JSON.name(), ConfigurationType.YAML.name())) || file
- .matches(String
- .format(CONFIG_REGEX_TPL_OPT_2, ConfigurationType.PROPERTIES.name(), ConfigurationType.XML.name(), ConfigurationType.JSON.name(),
- ConfigurationType.YAML.name()));
+ return CONFIG_PATTERN_OPT_1.matcher(file).matches() || CONFIG_PATTERN_OPT_2.matcher(file).matches();
}
public static boolean isConfig(File file) {
}
public static String getCollectionString(String input) {
- Pattern pattern = Pattern.compile("^\\[(.*)\\]$");
- Matcher matcher = pattern.matcher(input);
+ Matcher matcher = COLLECTION_STRING_PATTERN.matcher(input);
if (matcher.matches()) {
input = matcher.group(1);
}
}
public static String processVariablesIfPresent(String tenant, String namespace, String data) {
- Pattern pattern = Pattern.compile("^.*\\$\\{(.*)\\}.*");
- Matcher matcher = pattern.matcher(data);
+ Matcher matcher = VARIABLE_PATTERN.matcher(data);
if (matcher.matches()) {
final int substringStartIndex = 4;
String key = matcher.group(1);
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import javax.inject.Named;
import javax.ws.rs.core.Response;
import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
private static final String COMMIT_ITEM_ACTION = "Commit_Item";
private static final Logger LOGGER = LoggerFactory.getLogger(VersionsImpl.class);
+ private static final Pattern INITIAL_REVISION_PATTERN = Pattern.compile("Initial .*:.*");
private ManagersProvider managersProvider;
@Override
3- the second revision is in format "Initial <vlm/vsp>: <name of the vlm/vsp>"
4- only if a revision in this format exists we remove the first revision. */
int numOfRevisions = revisions.size();
- if (numOfRevisions > 1 && revisions.get(numOfRevisions - 2).getMessage().matches("Initial .*:.*")) {
+ if (numOfRevisions > 1 && INITIAL_REVISION_PATTERN.matcher(revisions.get(numOfRevisions - 2).getMessage()).matches()) {
revisions.remove(numOfRevisions - 1);
}
}