Skip to content

Commit

Permalink
[184] Add alias managment and namespace import extended
Browse files Browse the repository at this point in the history
Bug: #184
Signed-off-by: Guillaume Escande <guillaume.escande@obeosoft.fr>
  • Loading branch information
GuillaumeEscande authored and AxelRICHARD committed Apr 24, 2024
1 parent 3b038ab commit 803eb0d
Show file tree
Hide file tree
Showing 38 changed files with 730 additions and 142 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
- https://github.com/eclipse-syson/syson/issues/174[#174] [details] Fix an issue where an error raised when setting a valid new value (with primitive type) in the Details view.
- https://github.com/eclipse-syson/syson/issues/192[#192] [import] Fix an issue where the /* and */ of a Comment's body were imported while importing a textual SysML file.
- https://github.com/eclipse-syson/syson/issues/188[#188] [import] Fix an issue where some Memberships were contained in their parent through `ownedRelatedElement` instead of `ownedRelationship` reference.
- https://github.com/eclipse-syson/syson/issues/184[#184] [import] Fix an issue from element imported threw an alias
- https://github.com/eclipse-syson/syson/issues/199[#199] [explorer] Fix an issue where the rename action was not renaming tree items anymore
- https://github.com/eclipse-syson/syson/issues/209[#209] [diagrams] EnumerationDefinition was created without any name

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
*******************************************************************************/
package org.eclipse.syson.sysml;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
Expand All @@ -24,7 +21,8 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.syson.sysml.mapper.CachedObjectFinder;
import org.eclipse.syson.sysml.finder.CachedObjectFinder;
import org.eclipse.syson.sysml.finder.ObjectFinder;
import org.eclipse.syson.sysml.mapper.MapperArray;
import org.eclipse.syson.sysml.mapper.MapperComment;
import org.eclipse.syson.sysml.mapper.MapperConjugatedPortTyping;
Expand All @@ -44,7 +42,6 @@
import org.eclipse.syson.sysml.mapper.MapperMembership;
import org.eclipse.syson.sysml.mapper.MapperMembershipImport;
import org.eclipse.syson.sysml.mapper.MapperMembershipReference;
import org.eclipse.syson.sysml.mapper.MapperNamespace;
import org.eclipse.syson.sysml.mapper.MapperNamespaceImport;
import org.eclipse.syson.sysml.mapper.MapperOperatorExpression;
import org.eclipse.syson.sysml.mapper.MapperRedefinition;
Expand All @@ -56,10 +53,12 @@
import org.eclipse.syson.sysml.mapper.MapperVisitorInterface;
import org.eclipse.syson.sysml.mapper.MappingElement;
import org.eclipse.syson.sysml.mapper.MappingState;
import org.eclipse.syson.sysml.mapper.ObjectFinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
* Transforms AST data using defined mappings and updates resources accordingly.
*
Expand All @@ -85,7 +84,6 @@ public class ASTTransformer {
new MapperFlowConnectionUsage(this.objectFinder, this.mappingStates),
new MapperMembership(this.objectFinder, this.mappingStates),
new MapperMembershipImport(this.objectFinder, this.mappingStates),
new MapperNamespace(this.objectFinder, this.mappingStates),
new MapperNamespaceImport(this.objectFinder, this.mappingStates),
new MapperRedefinition(this.objectFinder, this.mappingStates),
new MapperSubclassification(this.objectFinder, this.mappingStates),
Expand Down Expand Up @@ -165,6 +163,7 @@ public Resource convertResource(InputStream input, List<EObject> list) {
}

this.logger.info("End complete mapping loop");
this.objectFinder.logStat();
rootElements.forEach(t -> result.getContents().add(t.getSelf()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
*******************************************************************************/
package org.eclipse.syson.sysml;

import com.fasterxml.jackson.databind.JsonNode;

import java.util.Arrays;
import java.util.List;

import com.fasterxml.jackson.databind.JsonNode;

/**
* Defines constants and utility methods for AST node parsing and information extraction.
*
Expand Down Expand Up @@ -137,4 +137,15 @@ public static String getQualifiedName(JsonNode node) {

return identifier;
}


public static String getSearchText(final JsonNode jsonNode) {
String searchText = null;
if (jsonNode.has(AstConstant.REFERENCE_CONST) && !jsonNode.get(AstConstant.REFERENCE_CONST).isNull() && !jsonNode.get(AstConstant.REFERENCE_CONST).asText().isBlank()) {
searchText = AstConstant.asCleanedText(jsonNode.get(AstConstant.REFERENCE_CONST));
} else if (jsonNode.has(AstConstant.TEXT_CONST) && !jsonNode.get(AstConstant.TEXT_CONST).isNull() && !jsonNode.get(AstConstant.TEXT_CONST).asText().isBlank()) {
searchText = AstConstant.asCleanedText(jsonNode.get(AstConstant.TEXT_CONST));
}
return searchText;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.syson.sysml.mapper;

import com.fasterxml.jackson.databind.JsonNode;
package org.eclipse.syson.sysml.finder;

import java.util.Collections;
import java.util.SortedMap;
Expand All @@ -22,6 +20,11 @@

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.syson.sysml.mapper.MappingElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.JsonNode;

/**
* Extends {@link ObjectFinder} with caching capabilities to enhance lookup performance.
Expand All @@ -30,6 +33,8 @@
*/
public class CachedObjectFinder extends ObjectFinder {

private final Logger logger = LoggerFactory.getLogger(CachedObjectFinder.class);

private ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();

private Lock readLock = this.readWriteLock.readLock();
Expand All @@ -49,6 +54,17 @@ public void addImportMember(final String importString) {
super.addImportMember(importString);
}

@Override
public void addImportAlias(final String initial, final String target) {
this.writeLock.lock();
try {
this.cache.clear();
} finally {
this.writeLock.unlock();
}
super.addImportAlias(initial, target);
}

@Override
public void addImportNamespace(final String importString) {
this.writeLock.lock();
Expand All @@ -75,7 +91,7 @@ public void putEObjectKey(final EObject eObject, String key) {
public EObject findObject(final MappingElement mapping, JsonNode jsonNode, final EClass type) {

EObject result = null;
int hash = jsonNode.toString().hashCode();
int hash = jsonNode.hashCode();
if (type != null) {
hash += type.getName().hashCode();
}
Expand All @@ -99,4 +115,11 @@ public EObject findObject(final MappingElement mapping, JsonNode jsonNode, final

return result;
}

@Override
public void logStat() {
super.logStat();
this.logger.debug("CachedObjectFinder Stat - cache.size = " + cache.size());
}

}
Loading

0 comments on commit 803eb0d

Please sign in to comment.