Skip to content

Commit

Permalink
fix bug for capability
Browse files Browse the repository at this point in the history
  • Loading branch information
lllyfeng committed Aug 22, 2024
1 parent de24540 commit 02e81c6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,28 @@ public YangModuleDescription getModule(String moduleName) {
return moduleDescription;
}

public YangModuleDescription removeModule(String moduleName){
int size = this.modules.size();
for(int i = 0; i < size;i++){
if(moduleName.equals(this.modules.get(i).getModuleId().getModuleName())){
return this.modules.remove(i);
}
}
return null;
}

public void addImportOnlyModule(YangModuleDescription module) {
this.importOnlyModules.add(module);
}

public YangModuleDescription removeImportOnlyModule(ModuleId moduleId){
int size = this.importOnlyModules.size();
for(int i = 0; i < size;i++){
if(moduleId.equals(this.modules.get(i).getModuleId())){
return this.importOnlyModules.remove(i);
}
}
return null;
}
public YangModuleDescription getImportOnlyModule(ModuleId moduleId) {
Iterator moduleDescriptionIterator = this.importOnlyModules.iterator();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;

public class YangYinParser {
static {
Expand Down Expand Up @@ -182,6 +179,20 @@ public static YangSchemaContext parse(String yangDir, List<Capability> capabilit
return schemaContext;
}

private static Map<ModuleId,Module> searchDependencyChain(YangSchemaContext schemaContext,Module module){
Map<ModuleId,Module> moduleMap = new HashMap<>();
List<Module> dependencies = module.getDependencies();
for(Module dependency: dependencies){
Optional<Module> moduleOp = schemaContext.getModule(dependency.getModuleId());
if(!moduleOp.isPresent()){
//if not found, add
moduleMap.putIfAbsent(dependency.getModuleId(),dependency);
}
moduleMap.putAll(searchDependencyChain(schemaContext,dependency));
}
return moduleMap;
}

public static YangSchemaContext filter(@Nonnull YangSchemaContext schemaContext, @Nonnull List<Capability> capabilityList){
List<Module> unMatchedModules = new ArrayList<>();
ModuleSet moduleSet = CapabilityParser.toModuleSet(capabilityList);
Expand Down Expand Up @@ -224,15 +235,16 @@ public static YangSchemaContext filter(@Nonnull YangSchemaContext schemaContext,
schemaContext.addImportOnlyModule(importOnlyModule);
}

Map<ModuleId,Module> moduleMap = new HashMap<>();
for (Module module : schemaContext.getModules()){
List<Module> dependencies = module.getDependencies();
for(Module dependency: dependencies){
Optional<Module> moduleOp = schemaContext.getModule(dependency.getModuleId());
if(!moduleOp.isPresent()){
schemaContext.addImportOnlyModule(dependency);
moduleSet.addImportOnlyModule(new YangModuleDescription(dependency.getModuleId()));
}
}
moduleMap.putAll(searchDependencyChain(schemaContext,module));
}

Iterator<Map.Entry<ModuleId,Module>> it = moduleMap.entrySet().iterator();
while (it.hasNext()){
Map.Entry<ModuleId,Module> entry = it.next();
schemaContext.addImportOnlyModule(entry.getValue());
moduleSet.addImportOnlyModule(new YangModuleDescription(entry.getValue().getModuleId()));
}

YangSchema yangSchema = schemaContext.getYangSchema();
Expand Down

0 comments on commit 02e81c6

Please sign in to comment.