</parent>
<artifactId>jython-tosca-parser</artifactId>
- <version>${jython.tosca.parser.version}</version>
+ <version>0.4.0-SNAPSHOT</version>
<dependencies>
<dependency>
<logback.version>1.1.2</logback.version>
<junit.version>4.12</junit.version>
<snakeyaml.version>1.14</snakeyaml.version>
- <jython.tosca.parser.version>0.4.0-SNAPSHOT</jython.tosca.parser.version>
<!-- Repositories -->
<!-- <nexusServerName>mavencentral.it.att.com</nexusServerName> -->
package org.openecomp.test;
-import java.io.IOException;
-
import org.openecomp.sdc.api.IDistributionClient;
import org.openecomp.sdc.api.consumer.INotificationCallback;
import org.openecomp.sdc.api.results.IDistributionClientResult;
import org.openecomp.sdc.impl.DistributionClientFactory;
-import org.openecomp.sdc.tosca.parser.impl.SdcCsarHelperImpl;
-import org.openecomp.sdc.toscaparser.ToscaParser;
-import org.openecomp.sdc.toscaparser.ToscaParserFactory;
-import org.openecomp.sdc.toscaparser.api.ToscaTemplate;
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
public class ClientTest {
public static void main(String[] args) throws Exception {
- /* ToscaParserFactory toscaParserFactory = null;
- try {
- toscaParserFactory = new ToscaParserFactory();
- ToscaParser parser = toscaParserFactory.create();
- ToscaTemplate toscaTemplate = parser.parse("test.csar");
- SdcCsarHelperImpl csarHelper = new SdcCsarHelperImpl(toscaTemplate);
+ try (SdcToscaParserFactory toscaParserFactory = SdcToscaParserFactory.getInstance()){
+ //ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar-nt-metadata.csar");
+ ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar.csar");
String serviceSubstitutionMappingsTypeName = csarHelper.getServiceSubstitutionMappingsTypeName();
System.out.println("serviceSubstitutionMappingsTypeName is "+serviceSubstitutionMappingsTypeName);
+ String nodeTemplatePropertyLeafValue = csarHelper.getNodeTemplatePropertyLeafValue(csarHelper.getServiceVfList().get(0), "nf_role");
+ System.out.println("property is "+nodeTemplatePropertyLeafValue);
}
- catch (Exception e){
- System.out.println(e);
- }
- finally{
- if (toscaParserFactory != null){
- toscaParserFactory.close();
- }
- }*/
-
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.getLogger("org.apache.http").setLevel(Level.INFO);
<dependency>\r
<groupId>org.openecomp.sdc.sdc-distribution-client</groupId>\r
<artifactId>jython-tosca-parser</artifactId>\r
- <version>${jython.tosca.parser.version}</version>\r
+ <version>0.4.0-SNAPSHOT</version>\r
</dependency>\r
\r
\r
import java.util.List;
+import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.openecomp.sdc.toscaparser.api.Group;
* @param metadata - metadata object.
* @param metadataPropertyName - the name of the metadata property.
* @return metadata property value
- */
+ *//*
//public String getMetadataPropertyValue(Metadata metadata, String metadataPropertyName);
-
+ */
/**
* Get input leaf value for the CSAR service, by full path separated by #.<br>
* Get the CSAR service metadata
* @return - the service metadata object.
*/
- //public Metadata getServiceMetadata();
+ public Map<String, String> getServiceMetadata();
/**
* Get all VFC node templates from a specified VF.
* \r
*/\r
private static final long serialVersionUID = 626014844866501196L;\r
-\r
+ \r
+ public SdcToscaParserException(String string) {\r
+ super(string);\r
+ }\r
}\r
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import org.apache.commons.lang3.tuple.Pair;
import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
import org.openecomp.sdc.toscaparser.api.Group;
import org.openecomp.sdc.toscaparser.api.NodeTemplate;
+import org.openecomp.sdc.toscaparser.api.Property;
import org.openecomp.sdc.toscaparser.api.TopologyTemplate;
import org.openecomp.sdc.toscaparser.api.ToscaTemplate;
-import org.openecomp.sdc.tosca.parser.impl.Types;
public class SdcCsarHelperImpl implements ISdcCsarHelper {
@Override
public String getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String leafValuePath) {
- //TODO
- return null;/*getLeafPropertyValue(nodeTemplate, leafValuePath);*/
+ String[] split = leafValuePath.split("#");
+ List<Property> properties = nodeTemplate.getProperties();
+ Optional<Property> findFirst = properties.stream().filter(x -> x.getName().equals(split[0])).findFirst();
+ if (findFirst.isPresent()){
+ Object current = findFirst.get().getValue();
+ /*for (int i = 1; i < split.length; i++) {
+ //if (i )
+ }*/
+ //TODO add nested props
+ return (String)current;
+ }
+ return null;
}
@Override
List<NodeTemplate> res = new ArrayList<>();
List<NodeTemplate> nodeTemplates = toscaTemplate.getNodeTemplates();
for (NodeTemplate nodeTemplate : nodeTemplates){
- if (nodeTemplate.getTypeDefinition().getType().equals(nodeType)){
+ if (nodeType.equals(nodeTemplate.getTypeDefinition().getType())){
res.add(nodeTemplate);
}
}
//Assumed to be unique property for the list
private NodeTemplate getNodeTemplateByCustomizationUuid(List<NodeTemplate> nodeTemplates, String customizationId){
- //TODO Metadata is missing
- /*for (NodeTemplate nodeTemplate : nodeTemplates){
- if (nodeTemplate.getMetadata().getMetadataPropertyValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).equals(customizationId)){
+ for (NodeTemplate nodeTemplate : nodeTemplates){
+ if (customizationId.equals(nodeTemplate.getMetadata().get(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID))){
return nodeTemplate;
}
- }*/
+ }
return null;
}
return res;
}
- //Metadata question
/*@Override
public String getMetadataPropertyValue(Metadata metadata, String metadataPropertyName) {
- return metadata.getMetadataPropertyValue(metadataPropertyName);
+ return (String)metadata.get(metadataPropertyName);
}*/
@Override
public String getServiceInputLeafValue(String inputLeafValuePath) {
- toscaTemplate.getTopologyTemplate().getNodeTemplates().get(0).getTypeDefinition().getType();
+ //toscaTemplate.getTopologyTemplate().getNodeTemplates().get(0).getProperties().get(0).
return null;//getLeafPropertyValue(toscaTemplate, inputLeafValuePath);
}
return toscaTemplate.getTopologyTemplate().getSubstitutionMappings().getNodeDefinition().getType();
}
- //Metadata question
- /*@Override
- public Metadata getServiceMetadata() {
- return toscaTemplate.getMetadata();
- }*/
+ @Override
+ public Map<String, String> getServiceMetadata() {
+ return toscaTemplate.getTopologyTemplate().getMetadata();
+ }
//Get property from group
@Override
private List<NodeTemplate> getNodeTemplateBySdcType(TopologyTemplate topologyTemplate, String sdcType){
//Need metadata to fetch by type
-/* List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
+ List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
List<NodeTemplate> res = new ArrayList<>();
for (NodeTemplate nodeTemplateEntry : nodeTemplates){
- if (nodeTemplateEntry.getMetadata().getMetadataPropertyValue(SdcPropertyNames.PROPERTY_NAME_TYPE).equals(sdcType)){
+ //TODO switch back to type condition
+ if (nodeTemplateEntry.getTypeDefinition().getType().contains("."+sdcType.toLowerCase()+".")){
+ //if (sdcType.equals(nodeTemplateEntry.getMetadata().get(SdcPropertyNames.PROPERTY_NAME_TYPE))){
res.add(nodeTemplateEntry);
}
}
-*/ return null;
+ return res;
}
@Override
--- /dev/null
+package org.openecomp.sdc.tosca.parser.impl;\r
+\r
+import java.io.IOException;\r
+\r
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;\r
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;\r
+import org.openecomp.sdc.toscaparser.ToscaParserFactory;\r
+\r
+public class SdcToscaParserFactory implements AutoCloseable{\r
+\r
+ private static SdcToscaParserFactory instance;\r
+ private static ToscaParserFactory toscaParserFactory; \r
+ \r
+ private SdcToscaParserFactory(){}\r
+\r
+ /**\r
+ * Get an SdcToscaParserFactory instance.\r
+ * After parsing work is done, it must be closed using the close() method.\r
+ */\r
+ public static SdcToscaParserFactory getInstance() {\r
+ if (instance == null) {\r
+ synchronized (SdcToscaParserFactory.class) {\r
+ if (instance == null) {\r
+ instance = new SdcToscaParserFactory();\r
+ toscaParserFactory = new ToscaParserFactory();\r
+ }\r
+ }\r
+ }\r
+ return instance;\r
+ }\r
+\r
+ /**\r
+ * Get an ISdcCsarHelper object for this CSAR file.\r
+ * @param csarPath - the path to CSAR file.\r
+ * @return ISdcCsarHelper object.\r
+ * @throws SdcToscaParserException - in case the path or CSAR are invalid.\r
+ */\r
+ public ISdcCsarHelper getSdcCsarHelper(String csarPath) throws SdcToscaParserException{\r
+ //TODO add logic to check if legal file and csar\r
+ synchronized (SdcToscaParserFactory.class) {\r
+ if (toscaParserFactory == null){\r
+ throw new SdcToscaParserException("The factory is closed. It was probably closed too soon.");\r
+ }\r
+ try {\r
+ return new SdcCsarHelperImpl(toscaParserFactory.create().parse(csarPath));\r
+ } catch (IOException e) {\r
+ throw new SdcToscaParserException("Exception when creating the parser: "+e.getMessage());\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Close the SdcToscaParserFactory.\r
+ */\r
+ public void close() {\r
+ if (toscaParserFactory != null){\r
+ synchronized (SdcToscaParserFactory.class) {\r
+ if (toscaParserFactory != null) {\r
+ try {\r
+ toscaParserFactory.close();\r
+ toscaParserFactory = null;\r
+ } catch (IOException e) {\r
+ //TODO add logging\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+}
\ No newline at end of file