use of org.osate.aadl2.ProcessType in project VERDICT by ge-high-assurance.
the class Aadl2CsvTranslator method populateDataFromAadlObjects.
/**
* Assume the input model is correct without any syntax errors
* Populate mission req, cyber and safety reqs and rels from AADL objects
*/
public void populateDataFromAadlObjects(List<EObject> objects) {
List<ComponentType> componentTypes = new ArrayList<>();
for (EObject obj : objects) {
if (obj instanceof SystemType) {
componentTypes.add((SystemType) obj);
} else if (obj instanceof BusType) {
componentTypes.add((BusType) obj);
} else if (obj instanceof SubprogramType) {
componentTypes.add((SubprogramType) obj);
} else if (obj instanceof ThreadType) {
componentTypes.add((ThreadType) obj);
} else if (obj instanceof MemoryType) {
componentTypes.add((MemoryType) obj);
} else if (obj instanceof DeviceType) {
componentTypes.add((DeviceType) obj);
} else if (obj instanceof AbstractType) {
componentTypes.add((AbstractType) obj);
} else if (obj instanceof ProcessType) {
componentTypes.add((ProcessType) obj);
} else if (obj instanceof ThreadGroupType) {
componentTypes.add((ThreadGroupType) obj);
} else if (obj instanceof VirtualProcessorType) {
componentTypes.add((VirtualProcessorType) obj);
} else if (obj instanceof ProcessorType) {
componentTypes.add((ProcessorType) obj);
} else if (obj instanceof SystemImplementation) {
compImpls.add((SystemImplementation) obj);
} else if (obj instanceof SubprogramImplementation) {
compImpls.add((SubprogramImplementation) obj);
} else if (obj instanceof ThreadImplementation) {
compImpls.add((ThreadImplementation) obj);
} else if (obj instanceof MemoryImplementation) {
compImpls.add((MemoryImplementation) obj);
} else if (obj instanceof BusImplementation) {
compImpls.add((BusImplementation) obj);
} else if (obj instanceof AbstractImplementation) {
compImpls.add((AbstractImplementation) obj);
} else if (obj instanceof DeviceImplementation) {
compImpls.add((DeviceImplementation) obj);
} else if (obj instanceof ProcessImplementation) {
compImpls.add((ProcessImplementation) obj);
} else if (obj instanceof ThreadGroupImplementation) {
compImpls.add((ThreadGroupImplementation) obj);
} else if (obj instanceof VirtualProcessorImplementation) {
compImpls.add((VirtualProcessorImplementation) obj);
} else if (obj instanceof ProcessorImplementation) {
compImpls.add((ProcessorImplementation) obj);
} else if (obj instanceof PropertySetImpl) {
// String propertySetName = ((PropertySetImpl)obj).getName();
// List<Property> compProps = new ArrayList<Property>();
Set<Property> compPropSet = new HashSet<Property>();
// List<Property> connProps = new ArrayList<Property>();
Set<Property> connPropSet = new HashSet<Property>();
for (Property prop : ((PropertySetImpl) obj).getOwnedProperties()) {
// Save property owner to be used later
for (PropertyOwner po : prop.getAppliesTos()) {
String propCat = ((MetaclassReferenceImpl) po).getMetaclass().getName().toLowerCase();
String propName = prop.getName();
switch(propCat) {
case "system":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "thread":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "processor":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "memory":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "connection":
{
connPropertyToName.put(prop, propName);
connPropSet.add(prop);
break;
}
case "process":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "abstract":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "device":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "threadgroup":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "virtualprocessor":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
case "bus":
{
componentPropertyToName.put(prop, propName);
compPropSet.add(prop);
break;
}
default:
{
System.out.println("Warning: unsupported property applies to: " + propCat);
break;
}
}
}
}
// compProps.addAll(compPropSet);
// connProps.addAll(connPropSet);
// propSetNameToCompProps.put(propertySetName, compProps);
// propSetNameToConnProps.put(propertySetName, connProps);
}
}
for (ComponentType compType : componentTypes) {
String compTypeName = compType.getName();
List<Event> events = new ArrayList<>();
List<CyberMission> missionReqs = new ArrayList<>();
List<CyberRel> cyberRels = new ArrayList<>();
List<SafetyRel> safetyRels = new ArrayList<>();
List<CyberReq> cyberReqs = new ArrayList<>();
List<SafetyReq> safetyReqs = new ArrayList<>();
for (AnnexSubclause annex : compType.getOwnedAnnexSubclauses()) {
if (annex.getName().equalsIgnoreCase("verdict")) {
Verdict verdictAnnex = VerdictUtil.getVerdict(annex);
for (Statement statement : verdictAnnex.getElements()) {
if (statement instanceof Event) {
events.add((Event) statement);
} else if (statement instanceof CyberMission) {
missionReqs.add((CyberMission) statement);
} else if (statement instanceof CyberReq) {
cyberReqs.add((CyberReq) statement);
} else if (statement instanceof CyberRel) {
cyberRels.add((CyberRel) statement);
} else if (statement instanceof SafetyReq) {
safetyReqs.add((SafetyReq) statement);
} else if (statement instanceof SafetyRel) {
safetyRels.add((SafetyRel) statement);
}
}
}
}
if (!events.isEmpty()) {
compTypeNameToEvents.put(compTypeName, events);
}
if (!missionReqs.isEmpty()) {
compTypeNameToMissions.put(compTypeName, missionReqs);
}
if (!cyberRels.isEmpty()) {
compTypeNameToCyberRels.put(compTypeName, cyberRels);
}
if (!safetyRels.isEmpty()) {
compTypeNameToSafetyRels.put(compTypeName, safetyRels);
}
if (!cyberReqs.isEmpty()) {
compTypeNameToCyberReqs.put(compTypeName, cyberReqs);
}
if (!safetyReqs.isEmpty()) {
compTypeNameToSafetyReqs.put(compTypeName, safetyReqs);
}
}
for (ComponentImplementation impl : compImpls) {
compTypeNameToImpl.put(impl.getType().getName(), impl);
if (!impl.getAllConnections().isEmpty()) {
sysImplToConns.put(impl, impl.getAllConnections());
}
}
}
use of org.osate.aadl2.ProcessType in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method translateProcessTypeObjects.
// End of translateAbstractTypeObjects
/**
* Analyzing each processType:
* 1. Determine if it is a lower-level system or higher-level system
* 2. If lower-level, add to componentType list attribute of Model
* 2.1 Populate the port, contract, cyberRel, safetyRel, event, id, compCategory
* fields of componentType of the Model object
* 3. If higher-level, assign to Model
* 3.1 Populate the safetyReq
* cyberReq, mission fields of Model object
* @param processTypes
* @param m1
* @return
*/
public Model translateProcessTypeObjects(List<ProcessType> processTypes, Model m1, HashSet<String> dataTypeDecl) {
for (ProcessType prcsType : processTypes) {
// variables for unpacking prcsType
List<Event> events = new ArrayList<>();
List<CyberMission> missionReqs = new ArrayList<>();
List<CyberRel> cyberRels = new ArrayList<>();
List<SafetyRel> safetyRels = new ArrayList<>();
List<CyberReq> cyberReqs = new ArrayList<>();
List<SafetyReq> safetyReqs = new ArrayList<>();
// a flag to check if a higher -level component has already been found
boolean higher_flag = false;
// unpacking prcsType
for (AnnexSubclause annex : prcsType.getOwnedAnnexSubclauses()) {
if (annex.getName().equalsIgnoreCase("verdict")) {
Verdict verdictAnnex = VerdictUtil.getVerdict(annex);
for (Statement statement : verdictAnnex.getElements()) {
if (statement instanceof Event) {
events.add((Event) statement);
} else if (statement instanceof CyberMission) {
missionReqs.add((CyberMission) statement);
} else if (statement instanceof CyberReq) {
cyberReqs.add((CyberReq) statement);
} else if (statement instanceof CyberRel) {
cyberRels.add((CyberRel) statement);
} else if (statement instanceof SafetyReq) {
safetyReqs.add((SafetyReq) statement);
} else if (statement instanceof SafetyRel) {
safetyRels.add((SafetyRel) statement);
}
}
}
}
/**
* For every ProcessType,
* populate the id, name, compCateg, port, event,
* cyberRel, and safetyRel fields of componentType
* and add it to the list of componentType
* of the Model object
*/
if (true) {
// No Filter-- do for all System Types
// to pack the memType as a VDM component
verdict.vdm.vdm_model.ComponentType packComponent = new verdict.vdm.vdm_model.ComponentType();
// Note: Not populating "contract" for now
// ISSUE: There is no getId() function for memoryType
packComponent.setId(prcsType.getQualifiedName());
// populating "name"
packComponent.setName(prcsType.getName());
// populating "compCateg"
packComponent.setCompCateg(prcsType.getCategory().getName());
// ISSUE: no getOwnedBusAccesses
// get all data accesses and store them as ports
List<DataAccess> dataAccesses = prcsType.getOwnedDataAccesses();
// checking each dataAccess's details and adding it to the port list
for (DataAccess dataAccess : dataAccesses) {
String portName = dataAccess.getName();
String modeString = "in";
if (dataAccess.getKind() == AccessType.PROVIDES) {
modeString = "providesDataAccess";
} else if (dataAccess.getKind() == AccessType.REQUIRES) {
modeString = "requiresDataAccess";
}
verdict.vdm.vdm_model.Port newPort = createVdmPort(portName, modeString, dataAccess.getQualifiedName());
// Note: Not populating "type" for now
// ISSUE: "probe", "event", and "id" not found in DataPort class or superclass
// add to port list of component
packComponent.getPort().add(newPort);
}
// End of checking each dataAccess
// get all ports
List<DataPort> dataPorts = prcsType.getOwnedDataPorts();
// checking each port's mode and name and adding it to the port list
for (DataPort dataPort : dataPorts) {
verdict.vdm.vdm_model.Port newPort = createVdmPort(dataPort, m1, dataTypeDecl);
// Note: Not populating "type" for now
// ISSUE: "probe", "event", and "id" not found in DataPort class or superclass
// add to port list of component
packComponent.getPort().add(newPort);
}
// End of checking each port
// get all event data ports
List<EventDataPort> eventDataPorts = prcsType.getOwnedEventDataPorts();
for (EventDataPort eventDataPort : eventDataPorts) {
verdict.vdm.vdm_model.Port newPort = createVdmPort(eventDataPort, m1, dataTypeDecl);
// add to port list of component
packComponent.getPort().add(newPort);
}
// get all event ports
List<EventPort> eventPorts = prcsType.getOwnedEventPorts();
for (EventPort eventPort : eventPorts) {
verdict.vdm.vdm_model.Port newPort = createVdmEventPort(eventPort);
// add to port list of component
packComponent.getPort().add(newPort);
}
// packing all events and adding to component
for (Event anEvent : events) {
// To pack the event as a VDM event
verdict.vdm.vdm_model.Event packEvent = createVdmEvent(anEvent);
// adding to the list of component's events
packComponent.getEvent().add(packEvent);
}
// packing all cyberRels and adding to component
for (CyberRel aCyberRel : cyberRels) {
// To pack the cyberRel as a VDM event
verdict.vdm.vdm_model.CyberRel packCyberRel = createVdmCyberRel(aCyberRel);
// adding to the list of component's Cyber relations
packComponent.getCyberRel().add(packCyberRel);
}
// packing all safetyRels and adding to component
for (SafetyRel aSafetyRel : safetyRels) {
// To pack the safetyRel as a VDM event
verdict.vdm.vdm_model.SafetyRel packSafetyRel = createVdmSafetyRel(aSafetyRel);
// adding to the list of component's Safety relations
packComponent.getSafetyRel().add(packSafetyRel);
}
// End of packing all safetyRels
// adding to the list of componenmemTypes of the Model object
m1.getComponentType().add(packComponent);
}
/**
* If a high-level system
* populate the name, safetyReq, cyberReq, and mission
* for the model object
*/
if (!cyberReqs.isEmpty() || !safetyReqs.isEmpty() || !missionReqs.isEmpty()) {
// checking if a high-level system has already been found
if (higher_flag == false) {
higher_flag = true;
} else {
System.out.println("Warning: Multiple high-level systems detected!");
}
// populating name
m1.setName(prcsType.getName());
// packing all safetyReqs and adding to model
for (SafetyReq aSafetyReq : safetyReqs) {
// To pack the safettReq as a VDM event
verdict.vdm.vdm_model.SafetyReq packSafetyReq = createVdmSafetyReq(aSafetyReq, prcsType.getFullName());
// adding to the list of model's Safety requirements
m1.getSafetyReq().add(packSafetyReq);
}
// packing all cyberReqs and adding to model
for (CyberReq aCyberReq : cyberReqs) {
// To pack the safettReq as a VDM event
verdict.vdm.vdm_model.CyberReq packCyberReq = createVdmCyberReq(aCyberReq, prcsType.getFullName());
// adding to the list of model's Cyber requirements
m1.getCyberReq().add(packCyberReq);
}
// packing all missionReqs and adding to model
for (CyberMission aMission : missionReqs) {
// To pack the safettReq as a VDM event
verdict.vdm.vdm_model.Mission packMission = createVdmMission(aMission);
// adding to the list of model's Mission
m1.getMission().add(packMission);
}
// End of packing all missionReqs
}
// End of if a higher-level system
}
// returning the populated Model
return m1;
}
use of org.osate.aadl2.ProcessType in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method populateVDMFromAadlObjects.
/**
* Assume the input is correct without any syntax errors
* Populate mission req, cyber and safety reqs and rels from AADL objects
*
* @param objects a List of AADL objects,
* @param objectsFromFilesInProject
* @param model an empty VDM model to populate
* @return a populated VDM model
* Vidhya: modified function to add and process only objects in the aadl files in the project excluding those in imported aadl files
*/
public Model populateVDMFromAadlObjects(List<EObject> objects, List<EObject> objectsFromFilesInProject, Model model) {
HashSet<String> dataTypeDecl = new HashSet<String>();
// variables for extracting data from the AADL object
List<SystemType> systemTypes = new ArrayList<>();
List<BusType> busTypes = new ArrayList<>();
List<SubprogramType> subprogramTypes = new ArrayList<>();
List<ThreadType> threadTypes = new ArrayList<>();
List<MemoryType> memoryTypes = new ArrayList<>();
List<DeviceType> deviceTypes = new ArrayList<>();
List<AbstractType> abstractTypes = new ArrayList<>();
List<ProcessType> processTypes = new ArrayList<>();
List<ThreadGroupType> threadGroupTypes = new ArrayList<>();
List<VirtualProcessorType> virtualProcessorTypes = new ArrayList<>();
List<ProcessorType> processorTypes = new ArrayList<>();
List<ComponentImplementation> compImpls = new ArrayList<>();
Map<Property, String> connPropertyToName = new LinkedHashMap<>();
Map<Property, String> componentPropertyToName = new LinkedHashMap<>();
// process only those properties defined in files in the project and not in the imported files
HashSet<String> objectNamesFromFilesInProject = getObjectNames(objectsFromFilesInProject);
// extracting data from the AADLObject
for (EObject obj : objects) {
if (obj instanceof SystemType) {
if (objectNamesFromFilesInProject.contains(((SystemType) obj).getName())) {
systemTypes.add((SystemType) obj);
}
} else if (obj instanceof BusType) {
if (objectNamesFromFilesInProject.contains(((BusType) obj).getName())) {
busTypes.add((BusType) obj);
}
} else if (obj instanceof SubprogramType) {
if (objectNamesFromFilesInProject.contains(((SubprogramType) obj).getName())) {
subprogramTypes.add((SubprogramType) obj);
}
} else if (obj instanceof ThreadType) {
if (objectNamesFromFilesInProject.contains(((ThreadType) obj).getName())) {
threadTypes.add((ThreadType) obj);
}
} else if (obj instanceof MemoryType) {
if (objectNamesFromFilesInProject.contains(((MemoryType) obj).getName())) {
memoryTypes.add((MemoryType) obj);
}
} else if (obj instanceof DeviceType) {
if (objectNamesFromFilesInProject.contains(((DeviceType) obj).getName())) {
deviceTypes.add((DeviceType) obj);
}
} else if (obj instanceof AbstractType) {
if (objectNamesFromFilesInProject.contains(((AbstractType) obj).getName())) {
abstractTypes.add((AbstractType) obj);
}
} else if (obj instanceof ProcessType) {
if (objectNamesFromFilesInProject.contains(((ProcessType) obj).getName())) {
processTypes.add((ProcessType) obj);
}
} else if (obj instanceof ThreadGroupType) {
if (objectNamesFromFilesInProject.contains(((ThreadGroupType) obj).getName())) {
threadGroupTypes.add((ThreadGroupType) obj);
}
} else if (obj instanceof VirtualProcessorType) {
if (objectNamesFromFilesInProject.contains(((VirtualProcessorType) obj).getName())) {
virtualProcessorTypes.add((VirtualProcessorType) obj);
}
} else if (obj instanceof ProcessorType) {
if (objectNamesFromFilesInProject.contains(((ProcessorType) obj).getName())) {
processorTypes.add((ProcessorType) obj);
}
} else if (obj instanceof SystemImplementation) {
if (objectNamesFromFilesInProject.contains(((SystemImplementation) obj).getName())) {
compImpls.add((SystemImplementation) obj);
}
} else if (obj instanceof SubprogramImplementation) {
if (objectNamesFromFilesInProject.contains(((SubprogramImplementation) obj).getName())) {
compImpls.add((SubprogramImplementation) obj);
}
} else if (obj instanceof ThreadImplementation) {
if (objectNamesFromFilesInProject.contains(((ThreadImplementation) obj).getName())) {
compImpls.add((ThreadImplementation) obj);
}
} else if (obj instanceof MemoryImplementation) {
if (objectNamesFromFilesInProject.contains(((MemoryImplementation) obj).getName())) {
compImpls.add((MemoryImplementation) obj);
}
} else if (obj instanceof BusImplementation) {
if (objectNamesFromFilesInProject.contains(((BusImplementation) obj).getName())) {
compImpls.add((BusImplementation) obj);
}
} else if (obj instanceof AbstractImplementation) {
if (objectNamesFromFilesInProject.contains(((AbstractImplementation) obj).getName())) {
compImpls.add((AbstractImplementation) obj);
}
} else if (obj instanceof DeviceImplementation) {
if (objectNamesFromFilesInProject.contains(((DeviceImplementation) obj).getName())) {
compImpls.add((DeviceImplementation) obj);
}
} else if (obj instanceof ProcessImplementation) {
if (objectNamesFromFilesInProject.contains(((ProcessImplementation) obj).getName())) {
compImpls.add((ProcessImplementation) obj);
}
} else if (obj instanceof ThreadGroupImplementation) {
if (objectNamesFromFilesInProject.contains(((ThreadGroupImplementation) obj).getName())) {
compImpls.add((ThreadGroupImplementation) obj);
}
} else if (obj instanceof VirtualProcessorImplementation) {
if (objectNamesFromFilesInProject.contains(((VirtualProcessorImplementation) obj).getName())) {
compImpls.add((VirtualProcessorImplementation) obj);
}
} else if (obj instanceof ProcessorImplementation) {
if (objectNamesFromFilesInProject.contains(((ProcessorImplementation) obj).getName())) {
compImpls.add((ProcessorImplementation) obj);
}
} else if (obj instanceof PropertySetImpl) {
Set<Property> compPropSet = new HashSet<Property>();
Set<Property> connPropSet = new HashSet<Property>();
for (Property prop : ((PropertySetImpl) obj).getOwnedProperties()) {
// Save property owner to be used later
for (PropertyOwner po : prop.getAppliesTos()) {
String propCat = ((MetaclassReferenceImpl) po).getMetaclass().getName().toLowerCase();
String propName = prop.getName();
switch(propCat) {
case "system":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "thread":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "processor":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "memory":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "connection":
{
if (objectNamesFromFilesInProject.contains(propName)) {
connPropertyToName.put(prop, propName);
}
connPropSet.add(prop);
break;
}
case "process":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "abstract":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "device":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "threadgroup":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "virtualprocessor":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "bus":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
case "port":
{
if (objectNamesFromFilesInProject.contains(propName)) {
componentPropertyToName.put(prop, propName);
}
compPropSet.add(prop);
break;
}
default:
{
if (objectNamesFromFilesInProject.contains(((PropertySetImpl) obj).getName())) {
System.out.println("Warning: unsupported property: " + propName + ", applies to: " + propCat);
}
break;
}
}
}
}
}
}
/* Translating all Component Types */
if (systemTypes.size() > 0) {
model = translateSystemTypeObjects(systemTypes, model, dataTypeDecl);
}
if (busTypes.size() > 0) {
model = translateBusTypeObjects(busTypes, model, dataTypeDecl);
}
if (subprogramTypes.size() > 0) {
model = translateSubprogramTypeObjects(subprogramTypes, model, dataTypeDecl);
}
if (threadTypes.size() > 0) {
model = translateThreadTypeObjects(threadTypes, model, dataTypeDecl);
}
if (memoryTypes.size() > 0) {
model = translateMemoryTypeObjects(memoryTypes, model, dataTypeDecl);
}
if (deviceTypes.size() > 0) {
model = translateDeviceTypeObjects(deviceTypes, model, dataTypeDecl);
}
if (abstractTypes.size() > 0) {
model = translateAbstractTypeObjects(abstractTypes, model, dataTypeDecl);
}
if (processTypes.size() > 0) {
model = translateProcessTypeObjects(processTypes, model, dataTypeDecl);
}
if (processTypes.size() > 0) {
model = translateProcessorTypeObjects(processorTypes, model, dataTypeDecl);
}
if (threadGroupTypes.size() > 0) {
model = translateThreadGroupTypeObjects(threadGroupTypes, model, dataTypeDecl);
}
if (virtualProcessorTypes.size() > 0) {
model = translateVirtualProcessorTypeObjects(virtualProcessorTypes, model, dataTypeDecl);
}
/* Translating all System Implementations */
// model = translateSystemImplObjects(systemImpls, componentPropertyToName, connPropertyToName,model);
// model = translateComponentImplObjects(compImpls, componentPropertyToName, connPropertyToName,model);
/**
* Translating all component implementations
*/
model = translateComponentImplObjects(compImpls, componentPropertyToName, connPropertyToName, model, dataTypeDecl);
// return the final model
return model;
}
use of org.osate.aadl2.ProcessType in project VERDICT by ge-high-assurance.
the class Aadl2Vdm method getObjectNames.
/**
* @author Vidhya Tekken Valapil
* Fetch names of objects and return the list of names
*/
private HashSet<String> getObjectNames(List<EObject> objects) {
HashSet<String> objNames = new HashSet<String>();
for (EObject obj : objects) {
// process only those objects in files in the project and not in the imported files
if (obj instanceof SystemType) {
objNames.add(((SystemType) obj).getName());
} else if (obj instanceof BusType) {
objNames.add(((BusType) obj).getName());
} else if (obj instanceof SubprogramType) {
objNames.add(((SubprogramType) obj).getName());
} else if (obj instanceof ThreadType) {
objNames.add(((ThreadType) obj).getName());
} else if (obj instanceof MemoryType) {
objNames.add(((MemoryType) obj).getName());
} else if (obj instanceof DeviceType) {
objNames.add(((DeviceType) obj).getName());
} else if (obj instanceof AbstractType) {
objNames.add(((AbstractType) obj).getName());
} else if (obj instanceof ProcessType) {
objNames.add(((ProcessType) obj).getName());
} else if (obj instanceof ThreadGroupType) {
objNames.add(((ThreadGroupType) obj).getName());
} else if (obj instanceof VirtualProcessorType) {
objNames.add(((VirtualProcessorType) obj).getName());
} else if (obj instanceof ProcessorType) {
objNames.add(((ProcessorType) obj).getName());
} else if (obj instanceof SystemImplementation) {
objNames.add(((SystemImplementation) obj).getName());
} else if (obj instanceof SubprogramImplementation) {
objNames.add(((SubprogramImplementation) obj).getName());
} else if (obj instanceof ThreadImplementation) {
objNames.add(((ThreadImplementation) obj).getName());
} else if (obj instanceof MemoryImplementation) {
objNames.add(((MemoryImplementation) obj).getName());
} else if (obj instanceof BusImplementation) {
objNames.add(((BusImplementation) obj).getName());
} else if (obj instanceof AbstractImplementation) {
objNames.add(((AbstractImplementation) obj).getName());
} else if (obj instanceof DeviceImplementation) {
objNames.add(((DeviceImplementation) obj).getName());
} else if (obj instanceof ProcessImplementation) {
objNames.add(((ProcessImplementation) obj).getName());
} else if (obj instanceof ThreadGroupImplementation) {
objNames.add(((ThreadGroupImplementation) obj).getName());
} else if (obj instanceof VirtualProcessorImplementation) {
objNames.add(((VirtualProcessorImplementation) obj).getName());
} else if (obj instanceof ProcessorImplementation) {
objNames.add(((ProcessorImplementation) obj).getName());
} else if (obj instanceof PropertySetImpl) {
for (Property prop : ((PropertySetImpl) obj).getOwnedProperties()) {
// Save property owner to be used later
for (PropertyOwner po : prop.getAppliesTos()) {
String propCat = ((MetaclassReferenceImpl) po).getMetaclass().getName().toLowerCase();
String propName = prop.getName();
switch(propCat) {
case "system":
{
objNames.add(propName);
break;
}
case "thread":
{
objNames.add(propName);
break;
}
case "processor":
{
objNames.add(propName);
break;
}
case "memory":
{
objNames.add(propName);
break;
}
case "connection":
{
objNames.add(propName);
break;
}
case "process":
{
objNames.add(propName);
break;
}
case "abstract":
{
objNames.add(propName);
break;
}
case "device":
{
objNames.add(propName);
break;
}
case "threadgroup":
{
objNames.add(propName);
break;
}
case "virtualprocessor":
{
objNames.add(propName);
break;
}
case "bus":
{
objNames.add(propName);
break;
}
case "port":
{
objNames.add(propName);
break;
}
default:
{
System.out.println("Warning: unsupported property: " + propName + ", applies to: " + propCat);
break;
}
}
}
}
}
}
return objNames;
}
use of org.osate.aadl2.ProcessType in project phoss-smp by phax.
the class ServiceMetadataInterfaceTest method testCreateAndDeleteServiceInformationSMPClient.
@Test
public void testCreateAndDeleteServiceInformationSMPClient() throws SMPClientException {
// Lower case
final IParticipantIdentifier aPI_LC = PeppolIdentifierFactory.INSTANCE.createParticipantIdentifierWithDefaultScheme("9915:xxx");
// Upper case
final IParticipantIdentifier aPI_UC = PeppolIdentifierFactory.INSTANCE.createParticipantIdentifierWithDefaultScheme("9915:XXX");
final PeppolDocumentTypeIdentifier aDT = EPredefinedDocumentTypeIdentifier.INVOICE_EN16931_PEPPOL_V30.getAsDocumentTypeIdentifier();
final PeppolProcessIdentifier aProcID = EPredefinedProcessIdentifier.BIS3_BILLING.getAsProcessIdentifier();
final ServiceGroupType aSG = new ServiceGroupType();
aSG.setParticipantIdentifier(new SimpleParticipantIdentifier(aPI_LC));
aSG.setServiceMetadataReferenceCollection(new ServiceMetadataReferenceCollectionType());
final ServiceInformationType aSI = new ServiceInformationType();
aSI.setParticipantIdentifier(new SimpleParticipantIdentifier(aPI_LC));
aSI.setDocumentIdentifier(aDT);
{
final ProcessListType aPL = new ProcessListType();
final ProcessType aProcess = new ProcessType();
aProcess.setProcessIdentifier(aProcID);
final ServiceEndpointList aSEL = new ServiceEndpointList();
final EndpointType aEndpoint = new EndpointType();
aEndpoint.setEndpointReference(W3CEndpointReferenceHelper.createEndpointReference("http://test.smpserver/as2"));
aEndpoint.setRequireBusinessLevelSignature(false);
aEndpoint.setCertificate("blacert");
aEndpoint.setServiceDescription("Unit test service");
aEndpoint.setTechnicalContactUrl("https://github.com/phax/phoss-smp");
aEndpoint.setTransportProfile(ESMPTransportProfile.TRANSPORT_PROFILE_AS2.getID());
aSEL.addEndpoint(aEndpoint);
aProcess.setServiceEndpointList(aSEL);
aPL.addProcess(aProcess);
aSI.setProcessList(aPL);
}
final ISMPServiceGroupManager aSGMgr = SMPMetaManager.getServiceGroupMgr();
final ISMPServiceInformationManager aSIMgr = SMPMetaManager.getServiceInformationMgr();
final SMPClient aSMPClient = new MockSMPClient();
assertNull(aSMPClient.getServiceGroupOrNull(aPI_LC));
assertNull(aSMPClient.getServiceGroupOrNull(aPI_UC));
assertFalse(aSGMgr.containsSMPServiceGroupWithID(aPI_LC));
assertFalse(aSGMgr.containsSMPServiceGroupWithID(aPI_UC));
try {
// PUT ServiceGroup
aSMPClient.saveServiceGroup(aSG, CREDENTIALS);
// Read both
assertNotNull(aSMPClient.getServiceGroupOrNull(aPI_LC));
assertNotNull(aSMPClient.getServiceGroupOrNull(aPI_UC));
assertTrue(aSGMgr.containsSMPServiceGroupWithID(aPI_LC));
assertTrue(aSGMgr.containsSMPServiceGroupWithID(aPI_UC));
final ISMPServiceGroup aServiceGroup = aSGMgr.getSMPServiceGroupOfID(aPI_LC);
assertNotNull(aServiceGroup);
final ISMPServiceGroup aServiceGroup_UC = aSGMgr.getSMPServiceGroupOfID(aPI_UC);
assertEquals(aServiceGroup, aServiceGroup_UC);
try {
// PUT 1 ServiceInformation
aSMPClient.saveServiceInformation(aSI, CREDENTIALS);
assertNotNull(aSIMgr.getSMPServiceInformationOfServiceGroupAndDocumentType(aServiceGroup, aDT));
// PUT 2 ServiceInformation
aSMPClient.saveServiceInformation(aSI, CREDENTIALS);
assertNotNull(aSIMgr.getSMPServiceInformationOfServiceGroupAndDocumentType(aServiceGroup, aDT));
// DELETE 1 ServiceInformation
aSMPClient.deleteServiceRegistration(aPI_LC, aDT, CREDENTIALS);
assertNull(aSIMgr.getSMPServiceInformationOfServiceGroupAndDocumentType(aServiceGroup, aDT));
} finally {
// DELETE 2 ServiceInformation
try {
aSMPClient.deleteServiceRegistration(aPI_LC, aDT, CREDENTIALS);
} catch (final SMPClientNotFoundException ex) {
// Expected
}
assertNull(aSIMgr.getSMPServiceInformationOfServiceGroupAndDocumentType(aServiceGroup, aDT));
}
assertNotNull(aSMPClient.getServiceGroup(aPI_LC));
} finally {
// DELETE ServiceGroup
try {
aSMPClient.deleteServiceGroup(aPI_LC, CREDENTIALS);
} catch (final SMPClientNotFoundException ex) {
// Expected
}
assertNull(aSMPClient.getServiceGroupOrNull(aPI_LC));
assertNull(aSMPClient.getServiceGroupOrNull(aPI_UC));
assertFalse(aSGMgr.containsSMPServiceGroupWithID(aPI_LC));
assertFalse(aSGMgr.containsSMPServiceGroupWithID(aPI_UC));
}
}
Aggregations