Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1235,7 +1235,7 @@ jobs:
- name: Build and test the SysON frontend
working-directory: editors/syson/frontend
run: |
npm ci
npm ci --ignore-scripts
npm run typecheck
npm run format:check
npm test
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/syson-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
- name: Build against the real Sirius packages
working-directory: editors/syson/frontend
run: |
npm ci
npm ci --ignore-scripts
cp .npmrc.example .npmrc
npm run install:syson
npm run build:syson
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ coverage-node.lcov
# Maven build output for the Java client and the Cameo plugin
/client/java/**/target/
/editors/cameo/**/target/
/editors/syson/**/target/
!/editors/cameo/dist/

# Partial oracle record a failed `make fuml-expected` leaves for diagnosis
Expand Down
1 change: 1 addition & 0 deletions changes/unreleased/java-condition-equal-to.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **The Java client's `Condition.equal` is renamed `Condition.equalTo`.** The old name collided with `Object.equals` on every use; `Condition.equalTo(property, values)` is a drop-in rename.
2 changes: 1 addition & 1 deletion client/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ try (Connection connection = Connection.open()) { // starts a private sysml
boolean holds = v.holds(); // false is an answer, not a failure
Analysis study = model.runAnalysis("Trade::lightest"); // outputs, verdicts, case evaluations
List<QueryElement> parts = model.query(
Query.all().where(Condition.equal("@type", List.of("PartUsage"))));
Query.all().where(Condition.equalTo("@type", List.of("PartUsage"))));

connection.capabilities().require(Capabilities.FEATURE_VALUES);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

/**
* A {@link Query} filter: one comparison of a property, or several conditions combined. Build one
* with {@link #equal}, {@link #greater}, {@link #less}, {@link #all} or {@link #any}, and negate it
* with {@link #equalTo}, {@link #greater}, {@link #less}, {@link #all} or {@link #any}, and negate it
* with {@link #negated()}.
*/
public sealed interface Condition {
Expand All @@ -19,7 +19,7 @@ public sealed interface Condition {
* @param values the values it may equal
* @return the comparison
*/
static Comparison equal(String property, List<String> values) {
static Comparison equalTo(String property, List<String> values) {
return new Comparison(property, Comparison.Operator.EQUAL, values, false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@
* }</pre>
*/
public final class Connection implements AutoCloseable {
private static final String NAME_OPTIONS = "options";
private static final String NAME_CONTENT = "content";

private final ConnectTransport transport;
private final String address;
Expand Down Expand Up @@ -92,7 +94,7 @@ public static Connection open() {
* @throws TransportException if the service could not be reached
*/
public static Connection open(ConnectionOptions options) {
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
Optional<String> external = externalAddress(options);
if (external.isPresent()) {
String address = external.get();
Expand Down Expand Up @@ -217,7 +219,7 @@ public Model load(Path file, ParseOptions options) {
* @throws ModelException if the source could not be parsed at all
*/
public Model parse(String content) {
Objects.requireNonNull(content, "content");
Objects.requireNonNull(content, NAME_CONTENT);
return parsed(ParseFileRequest.newBuilder().setContent(content).build());
}

Expand All @@ -229,7 +231,7 @@ public Model parse(String content) {
* @return the parsed model
*/
public Model parse(String content, ParseOptions options) {
Objects.requireNonNull(content, "content");
Objects.requireNonNull(content, NAME_CONTENT);
return parsed(request(options).setContent(content).build());
}

Expand Down Expand Up @@ -267,7 +269,7 @@ public Model parseSources(List<SourceDocument> documents) {
*/
public Model parseSources(List<SourceDocument> documents, ParseOptions options) {
Objects.requireNonNull(documents, "documents");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
capabilities.require(Capabilities.PARSE_SOURCES);
if (options.strictConformance()) {
capabilities.require(Capabilities.STRICT_CONFORMANCE);
Expand Down Expand Up @@ -321,7 +323,7 @@ public Conversion convert(String content, String toFormat) {
* @throws CapabilityException if the service does not advertise {@code convert}
*/
public Conversion convert(String content, String toFormat, ConversionOptions options) {
Objects.requireNonNull(content, "content");
Objects.requireNonNull(content, NAME_CONTENT);
return converted(ConvertRequest.newBuilder().setContent(content), toFormat, options);
}

Expand Down Expand Up @@ -420,7 +422,7 @@ private Model parsed(ParseFileRequest request) {
private Conversion converted(
ConvertRequest.Builder request, String toFormat, ConversionOptions options) {
Objects.requireNonNull(toFormat, "toFormat");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
capabilities.require(Capabilities.CONVERT);
request.setToFormat(toFormat).setTolerateSyntaxErrors(options.tolerateSyntaxErrors());
options.fromFormat().ifPresent(request::setFromFormat);
Expand All @@ -434,7 +436,7 @@ private Conversion converted(
}

private static ParseFileRequest.Builder request(ParseOptions options) {
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
return ParseFileRequest.newBuilder()
.setLanguage(options.language().wireName())
.setStrictConformance(options.strictConformance());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
*/
public sealed interface Edit {

private static void requireTarget(String target) {
Objects.requireNonNull(target, "target");
}

/**
* Sets the value of a feature that already exists, replacing the expression of its {@code =
* <expr>} or adding one before the declaration's {@code ;}.
Expand All @@ -30,7 +34,7 @@ record SetValue(String target, String value) implements Edit {
* @param value the new value, never {@code null}
*/
public SetValue {
Objects.requireNonNull(target, "target");
requireTarget(target);
Objects.requireNonNull(value, "value");
}
}
Expand All @@ -52,7 +56,7 @@ record Rename(String target, String newName) implements Edit {
* @param newName the new name, never {@code null}
*/
public Rename {
Objects.requireNonNull(target, "target");
requireTarget(target);
Objects.requireNonNull(newName, "newName");
}
}
Expand Down Expand Up @@ -170,7 +174,7 @@ record Delete(String target, boolean cascade) implements Edit {
* @param cascade whether referring declarations go too
*/
public Delete {
Objects.requireNonNull(target, "target");
requireTarget(target);
}
}

Expand All @@ -191,7 +195,7 @@ record Move(String target, String owner) implements Edit {
* @param owner the receiving namespace, never {@code null}
*/
public Move {
Objects.requireNonNull(target, "target");
requireTarget(target);
Objects.requireNonNull(owner, "owner");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@
* what the call needs.
*/
public final class Model {
private static final String EXPLORE = "explore";
private static final String NAME_SUBJECT_SYMBOL_ID = "subjectSymbolId";
private static final String NAME_SYMBOL_ID = "symbolId";
private static final String NAME_OPTIONS = "options";

private final Connection connection;
private final String hash;
Expand Down Expand Up @@ -171,7 +175,7 @@ public Optional<String> engine() {
public Model withEngine(String engine) {
Objects.requireNonNull(engine, "engine");
connection.capabilities().require(Capabilities.ENGINES);
if (engine.equals("explore")) {
if (engine.equals(EXPLORE)) {
connection.capabilities().require(Capabilities.SCHEDULE_EXPLORE);
}
return new Model(connection, hash, roots, parseDiagnostics, Optional.of(engine));
Expand Down Expand Up @@ -263,7 +267,7 @@ public Value evalInContext(String expression, String contextSymbolId) {
* would otherwise ignore rather than refuse
*/
public Value evalWithSubject(String expression, String subjectSymbolId) {
Objects.requireNonNull(subjectSymbolId, "subjectSymbolId");
Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID);
connection.capabilities().require(Capabilities.EVALUATE_SUBJECT);
return evaluated(request(expression).setSubjectSymbolId(subjectSymbolId).build());
}
Expand All @@ -277,7 +281,7 @@ public Value evalWithSubject(String expression, String subjectSymbolId) {
* @throws ServiceException if the service does not hold this model
*/
public Instantiation instantiate(String symbolId) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
InstantiateResponse response =
connection.call(
"Instantiate",
Expand Down Expand Up @@ -503,12 +507,12 @@ public Verification verifyConstraint(String symbolId) {
* @throws CapabilityException if the service does not advertise {@code verification}
*/
public Verification verifyConstraint(String symbolId, String subjectSymbolId) {
Objects.requireNonNull(subjectSymbolId, "subjectSymbolId");
Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID);
return verifyConstraint(symbolId, Optional.of(subjectSymbolId));
}

private Verification verifyConstraint(String symbolId, Optional<String> subjectSymbolId) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
connection.capabilities().require(Capabilities.VERIFICATION);
VerifyConstraintRequest.Builder request =
VerifyConstraintRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId);
Expand Down Expand Up @@ -546,12 +550,12 @@ public Verification verifyRequirement(String symbolId) {
* @throws CapabilityException if the service does not advertise {@code verification}
*/
public Verification verifyRequirement(String symbolId, String subjectSymbolId) {
Objects.requireNonNull(subjectSymbolId, "subjectSymbolId");
Objects.requireNonNull(subjectSymbolId, NAME_SUBJECT_SYMBOL_ID);
return verifyRequirement(symbolId, Optional.of(subjectSymbolId));
}

private Verification verifyRequirement(String symbolId, Optional<String> subjectSymbolId) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
connection.capabilities().require(Capabilities.VERIFICATION);
VerifyRequirementRequest.Builder request =
VerifyRequirementRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId);
Expand Down Expand Up @@ -616,7 +620,7 @@ private Satisfaction verifySatisfaction(Optional<String> scopeSymbolId) {
* @throws CapabilityException if the service does not advertise {@code verification}
*/
public Validation validateInstance(String symbolId) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
connection.capabilities().require(Capabilities.VERIFICATION);
ValidateInstanceRequest.Builder request =
ValidateInstanceRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId);
Expand All @@ -640,7 +644,7 @@ public Validation validateInstance(String symbolId) {
* @throws ServiceException if the service does not hold this model
*/
public Calculation evaluateCalc(String symbolId, List<Value> arguments) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
Objects.requireNonNull(arguments, "arguments");
EvaluateCalcRequest.Builder request =
EvaluateCalcRequest.newBuilder()
Expand Down Expand Up @@ -732,10 +736,10 @@ public Exploration exploreAnalysis(String symbolId, AnalysisOptions options) {

private RunAnalysisResponse runAnalysis(
String symbolId, AnalysisOptions options, boolean explore) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
Objects.requireNonNull(options, NAME_OPTIONS);
connection.capabilities().require(Capabilities.VERIFICATION);
if (!explore && engine.isPresent() && engine.orElseThrow().equals("explore")) {
if (!explore && engine.isPresent() && engine.orElseThrow().equals(EXPLORE)) {
throw new IllegalArgumentException(
"engine explore answers every outcome; use exploreAnalysis");
}
Expand Down Expand Up @@ -813,7 +817,7 @@ public Conversion convert(String toFormat) {
*/
public Conversion convert(String toFormat, ConversionOptions options) {
Objects.requireNonNull(toFormat, "toFormat");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
connection.capabilities().require(Capabilities.CONVERT);
ConvertRequest.Builder request =
ConvertRequest.newBuilder()
Expand Down Expand Up @@ -863,7 +867,7 @@ public EditResult applyEdits(List<Edit> edits) {
*/
public EditResult applyEdits(List<Edit> edits, EditOptions options) {
Objects.requireNonNull(edits, "edits");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
connection.capabilities().require(Capabilities.APPLY_EDITS);
for (Edit edit : edits) {
if (edit instanceof Edit.AddMember || edit instanceof Edit.Delete || edit instanceof Edit.Move) {
Expand Down Expand Up @@ -923,9 +927,9 @@ public Sweep runSweep(String symbolId, List<SweepRange> ranges) {
* @throws CapabilityException if the service does not advertise {@code verification}
*/
public Sweep runSweep(String symbolId, List<SweepRange> ranges, SweepOptions options) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
Objects.requireNonNull(ranges, "ranges");
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
connection.capabilities().require(Capabilities.VERIFICATION);
RunSweepRequest.Builder request =
RunSweepRequest.newBuilder()
Expand Down Expand Up @@ -1016,7 +1020,7 @@ public RenderedDocument renderDocument(String documentId) {
}

private String schedule(ExecutionOptions options, boolean explore) {
Objects.requireNonNull(options, "options");
Objects.requireNonNull(options, NAME_OPTIONS);
if (options.performer().isPresent()) {
connection.capabilities().require(Capabilities.PERFORMER);
}
Expand All @@ -1030,7 +1034,7 @@ private String schedule(Optional<String> schedule, boolean explores, boolean exp
"schedule " + schedule.orElseThrow() + " runs once; an exploration takes explore");
}
connection.capabilities().require(Capabilities.SCHEDULE_EXPLORE);
return schedule.orElse("explore");
return schedule.orElse(EXPLORE);
}
if (explores) {
throw new IllegalArgumentException(
Expand All @@ -1057,7 +1061,7 @@ private static void failed(
}

private SymbolResponse symbolResponse(String symbolId) {
Objects.requireNonNull(symbolId, "symbolId");
Objects.requireNonNull(symbolId, NAME_SYMBOL_ID);
return connection.call(
"GetSymbol",
GetSymbolRequest.newBuilder().setModelHash(hash).setSymbolId(symbolId).build(),
Expand Down
Loading
Loading