From 66dec0a2f9574f9526844c1f6e4158423278ce2d Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Sat, 22 Nov 2025 12:39:01 +0000
Subject: [PATCH 1/7] Migrate lyo-client-samples to use oslc-domains
Updated lyo-client-samples to use domain classes from oslc-domains artifact instead of the legacy oslc-java-client-resources.
Updated pom.xml to depend on oslc-domains.
Modified samples to handle API changes:
- Package changes for QM, CM, RM, Automation domains.
- Set types handling (Set instead of arrays).
- Added missing constants in IConstants.java.
- Handled ParameterInstance type change in AutomationRequest (changed from array to Set).
- Replaced getRdfTypes() with getTypes().iterator().next().
---
lyo-client-samples/pom.xml | 5 +-
.../lyo/samples/client/jazz/ERMSample.java | 43 +++++++-----
.../lyo/samples/client/jazz/ETMSample.java | 8 ++-
.../lyo/samples/client/jazz/EWMSample.java | 38 ++++++++---
.../jazz/automation/ETMAutomationSample.java | 36 ++++++----
.../automation/impl/AutomationAdapter.java | 68 +++++++++++++------
.../AutomationRequestCanceledException.java | 2 +-
.../impl/IAutomationRequestHandler.java | 4 +-
.../jazz/automation/impl/IConstants.java | 9 +++
.../lyo/samples/client/oslc4j/CMSample.java | 4 +-
.../lyo/samples/client/oslc4j/RMSample.java | 4 +-
11 files changed, 150 insertions(+), 71 deletions(-)
diff --git a/lyo-client-samples/pom.xml b/lyo-client-samples/pom.xml
index 68475ea..ce28a6c 100644
--- a/lyo-client-samples/pom.xml
+++ b/lyo-client-samples/pom.xml
@@ -242,9 +242,8 @@
httpclient
-
- org.eclipse.lyo.clients
- oslc-java-client-resources
+ org.eclipse.lyo
+ oslc-domains
${v.lyo}
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ERMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ERMSample.java
index 8de4b2d..f9de5f2 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ERMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ERMSample.java
@@ -49,13 +49,12 @@
import org.eclipse.lyo.client.RootServicesHelper;
import org.eclipse.lyo.client.exception.ResourceNotFoundException;
import org.eclipse.lyo.client.exception.RootServicesException;
-import org.eclipse.lyo.client.oslc.resources.Requirement;
-import org.eclipse.lyo.client.oslc.resources.RequirementCollection;
-import org.eclipse.lyo.client.oslc.resources.RmConstants;
import org.eclipse.lyo.client.query.OslcQuery;
import org.eclipse.lyo.client.query.OslcQueryParameters;
import org.eclipse.lyo.client.query.OslcQueryResult;
import org.eclipse.lyo.client.resources.RmUtil;
+import org.eclipse.lyo.oslc.domains.rm.Requirement;
+import org.eclipse.lyo.oslc.domains.rm.RequirementCollection;
import org.eclipse.lyo.oslc4j.core.OSLC4JUtils;
import org.eclipse.lyo.oslc4j.core.model.*;
import org.glassfish.jersey.apache.connector.ApacheClientProperties;
@@ -75,10 +74,21 @@
@Slf4j
public class ERMSample {
+ // Constants not present in standard oslc-domains or need replacement
+ // RmConstants were in oslc-java-client-resources.
+ // JAZZ_RM_NAMESPACE = "http://jazz.net/xmlns/prod/jazz/rm/1.0/"
+ // PROPERTY_PRIMARY_TEXT = new QName(JAZZ_RM_NAMESPACE, "primaryText")
+ // PROPERTY_PARENT_FOLDER = new QName(JAZZ_RM_NAMESPACE, "parent")
+ // NAMESPACE_URI_XHTML = "http://www.w3.org/1999/xhtml"
+
+ public static final String JAZZ_RM_NAMESPACE = "http://jazz.net/xmlns/prod/jazz/rm/1.0/";
+ public static final QName PROPERTY_PRIMARY_TEXT = new QName(JAZZ_RM_NAMESPACE, "primaryText");
+ public static final QName PROPERTY_PARENT_FOLDER = new QName(JAZZ_RM_NAMESPACE, "parent");
+ public static final String NAMESPACE_URI_XHTML = "http://www.w3.org/1999/xhtml";
+
// Following is a workaround for primaryText issue in DNG ( it is PrimaryText instead of
// primaryText
- private static final QName PROPERTY_PRIMARY_TEXT_WORKAROUND =
- new QName(RmConstants.JAZZ_RM_NAMESPACE, "PrimaryText");
+ private static final QName PROPERTY_PRIMARY_TEXT_WORKAROUND = new QName(JAZZ_RM_NAMESPACE, "PrimaryText");
/**
* Login to the ERM server and perform some OSLC actions
@@ -239,13 +249,13 @@ public static void main(String[] args) throws Exception {
} else {
// Create REQ01
requirement = new Requirement();
- requirement.setInstanceShape(featureInstanceShape.getAbout());
+ requirement.setInstanceShape(Collections.singleton(new Link(featureInstanceShape.getAbout())));
requirement.setTitle("Req01");
// Decorate the PrimaryText
primaryText = "My Primary Text";
org.w3c.dom.Element obj = convertStringToHTML(primaryText);
- requirement.getExtendedProperties().put(RmConstants.PROPERTY_PRIMARY_TEXT, obj);
+ requirement.getExtendedProperties().put(PROPERTY_PRIMARY_TEXT, obj);
requirement.setDescription("Created By EclipseLyo");
requirement.addImplementedBy(new Link(new URI("http://google.com"), "Link in REQ01"));
@@ -263,7 +273,7 @@ public static void main(String[] args) throws Exception {
// Create REQ02
requirement = new Requirement();
- requirement.setInstanceShape(featureInstanceShape.getAbout());
+ requirement.setInstanceShape(Collections.singleton(new Link(featureInstanceShape.getAbout())));
requirement.setTitle("Req02");
requirement.setDescription("Created By EclipseLyo");
requirement.addValidatedBy(new Link(new URI("http://bancomer.com"), "Link in REQ02"));
@@ -281,7 +291,7 @@ public static void main(String[] args) throws Exception {
// Create REQ03
requirement = new Requirement();
- requirement.setInstanceShape(featureInstanceShape.getAbout());
+ requirement.setInstanceShape(Collections.singleton(new Link(featureInstanceShape.getAbout())));
requirement.setTitle("Req03");
requirement.setDescription("Created By EclipseLyo");
requirement.addValidatedBy(new Link(new URI("http://outlook.com"), "Link in REQ03"));
@@ -299,7 +309,7 @@ public static void main(String[] args) throws Exception {
// Create REQ04
requirement = new Requirement();
- requirement.setInstanceShape(featureInstanceShape.getAbout());
+ requirement.setInstanceShape(Collections.singleton(new Link(featureInstanceShape.getAbout())));
requirement.setTitle("Req04");
requirement.setDescription("Created By EclipseLyo");
@@ -319,11 +329,12 @@ public static void main(String[] args) throws Exception {
// Create REQ04
collection = new RequirementCollection();
- collection.addUses(new URI(req03URL));
- collection.addUses(new URI(req04URL));
+ collection.addUses(new Link(new URI(req03URL)));
+ collection.addUses(new Link(new URI(req04URL)));
if (collectionInstanceShape != null) {
- collection.setInstanceShape(collectionInstanceShape.getAbout());
+ collection.setInstanceShape(
+ Collections.singleton(new Link(collectionInstanceShape.getAbout())));
}
collection.setTitle("Collection01");
collection.setDescription("Created By EclipseLyo");
@@ -370,9 +381,9 @@ public static void main(String[] args) throws Exception {
}
// Save the URI of the root folder in order to used it easily
- rootFolder = (URI) requirement.getExtendedProperties().get(RmConstants.PROPERTY_PARENT_FOLDER);
+ rootFolder = (URI) requirement.getExtendedProperties().get(PROPERTY_PARENT_FOLDER);
Object changedPrimaryText =
- (Object) requirement.getExtendedProperties().get(RmConstants.PROPERTY_PRIMARY_TEXT);
+ (Object) requirement.getExtendedProperties().get(PROPERTY_PRIMARY_TEXT);
if (changedPrimaryText == null) {
// Check with the workaround
changedPrimaryText =
@@ -521,7 +532,7 @@ private static Element convertStringToHTML(String primaryText) {
try {
Document document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
- Element divElement = document.createElementNS(RmConstants.NAMESPACE_URI_XHTML, "div");
+ Element divElement = document.createElementNS(NAMESPACE_URI_XHTML, "div");
divElement.setTextContent(primaryText);
return divElement;
} catch (ParserConfigurationException e) {
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
index f58068a..d2cef0c 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
@@ -39,11 +39,11 @@
import org.eclipse.lyo.client.OslcClient;
import org.eclipse.lyo.client.RootServicesHelper;
import org.eclipse.lyo.client.exception.RootServicesException;
-import org.eclipse.lyo.client.oslc.resources.TestCase;
-import org.eclipse.lyo.client.oslc.resources.TestResult;
import org.eclipse.lyo.client.query.OslcQuery;
import org.eclipse.lyo.client.query.OslcQueryParameters;
import org.eclipse.lyo.client.query.OslcQueryResult;
+import org.eclipse.lyo.oslc.domains.qm.TestCase;
+import org.eclipse.lyo.oslc.domains.qm.TestResult;
import org.eclipse.lyo.oslc4j.core.model.Link;
import org.eclipse.lyo.oslc4j.core.model.OslcMediaType;
import org.glassfish.jersey.apache.connector.ApacheClientProperties;
@@ -167,7 +167,9 @@ public static void main(String[] args) throws ParseException {
new URI("http://cmprovider/changerequest/1"), "Implement accessibility in Pet Store application"));
String testcaseCreation = client.lookupCreationFactory(
- serviceProviderUrl, OSLCConstants.OSLC_QM_V2, testcase.getRdfTypes()[0].toString());
+ serviceProviderUrl,
+ OSLCConstants.OSLC_QM_V2,
+ testcase.getTypes().iterator().next().toString());
Response creationResponse = client.createResource(
testcaseCreation, testcase, OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_RDF_XML);
String testcaseLocation = creationResponse.getStringHeaders().getFirst(HttpHeaders.LOCATION);
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
index db19d43..f33213b 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
@@ -47,13 +47,14 @@
import org.eclipse.lyo.client.OslcClient;
import org.eclipse.lyo.client.RootServicesHelper;
import org.eclipse.lyo.client.exception.RootServicesException;
-import org.eclipse.lyo.client.oslc.resources.ChangeRequest;
import org.eclipse.lyo.client.query.OslcQuery;
import org.eclipse.lyo.client.query.OslcQueryParameters;
import org.eclipse.lyo.client.query.OslcQueryResult;
+import org.eclipse.lyo.oslc.domains.cm.ChangeRequest;
import org.eclipse.lyo.oslc4j.core.model.AllowedValues;
import org.eclipse.lyo.oslc4j.core.model.CreationFactory;
import org.eclipse.lyo.oslc4j.core.model.Link;
+import org.eclipse.lyo.oslc4j.core.model.OslcConstants;
import org.eclipse.lyo.oslc4j.core.model.OslcMediaType;
import org.eclipse.lyo.oslc4j.core.model.Property;
import org.eclipse.lyo.oslc4j.core.model.ResourceShape;
@@ -213,15 +214,31 @@ public static void main(String[] args) throws ParseException {
task.setTitle("Implement accessibility in Pet Store application");
task.setDescription("Image elements must provide a description in the 'alt' attribute for"
+ " consumption by screen readers.");
- task.addTestedByTestCase(new Link(
- new URI("http://qmprovider/testcase/1"), "Accessibility verification using a screen reader"));
- task.addDctermsType("task");
+ // testedByTestCase is not part of standard OSLC CM 2.0 ChangeRequest, so we use extended properties.
+ // Note: In oslc-java-client-resources it was available, but in oslc-domains it is strict to spec.
+ // Jazz uses http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/testedByTestCase ?
+ // Actually, the original code used addTestedByTestCase(Link).
+ // We'll use the QName for it.
+ // However, the property name in Jazz might be "http://open-services.net/ns/cm#testedByTestCase" or similar
+ // if it was generated.
+ // The method name `addTestedByTestCase` suggests `testedByTestCase`.
+ // Let's assume it is in the oslc_cm namespace or rtc_cm namespace.
+ // Based on previous resources, it was often `oslc_cm:testedByTestCase`.
+ task.getExtendedProperties()
+ .put(
+ new QName(OSLCConstants.OSLC_CM_V2, "testedByTestCase"),
+ new Link(
+ new URI("http://qmprovider/testcase/1"),
+ "Accessibility verification using a screen reader"));
+
+ // dcterms:type
+ task.getExtendedProperties().put(new QName(OslcConstants.DCTERMS_NAMESPACE, "type"), "task");
// Get the Creation Factory URL for task change requests so that we can create one
CreationFactory taskCreation = client.lookupCreationFactoryResource(
serviceProviderUrl,
OSLCConstants.OSLC_CM_V2,
- task.getRdfTypes()[0].toString(),
+ task.getTypes().iterator().next().toString(),
OSLCConstants.OSLC_CM_V2 + "task");
String factoryUrl = taskCreation.getCreation().toString();
@@ -276,14 +293,19 @@ public static void main(String[] args) throws ParseException {
defect.setTitle("Error logging in");
defect.setDescription(
"An error occurred when I tried to log in with a user ID that contained the '@'" + " symbol.");
- defect.addTestedByTestCase(new Link(new URI("http://qmprovider/testcase/3"), "Global Verifcation Test"));
- defect.addDctermsType("defect");
+
+ defect.getExtendedProperties()
+ .put(
+ new QName(OSLCConstants.OSLC_CM_V2, "testedByTestCase"),
+ new Link(new URI("http://qmprovider/testcase/3"), "Global Verifcation Test"));
+
+ defect.getExtendedProperties().put(new QName(OslcConstants.DCTERMS_NAMESPACE, "type"), "defect");
// Get the Creation Factory URL for change requests so that we can create one
CreationFactory defectCreation = client.lookupCreationFactoryResource(
serviceProviderUrl,
OSLCConstants.OSLC_CM_V2,
- defect.getRdfTypes()[0].toString(),
+ defect.getTypes().iterator().next().toString(),
OSLCConstants.OSLC_CM_V2 + "defect");
factoryUrl = defectCreation.getCreation().toString();
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
index 71f0a0e..97bd430 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
@@ -24,6 +24,7 @@
import java.net.URL;
import java.util.Date;
import java.util.Properties;
+import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -33,10 +34,9 @@
import org.apache.http.ssl.SSLContextBuilder;
import org.eclipse.lyo.client.JEEFormAuthenticator;
import org.eclipse.lyo.client.OslcClient;
-import org.eclipse.lyo.client.oslc.resources.AutomationConstants;
-import org.eclipse.lyo.client.oslc.resources.AutomationRequest;
-import org.eclipse.lyo.client.oslc.resources.AutomationResult;
-import org.eclipse.lyo.client.oslc.resources.ParameterInstance;
+import org.eclipse.lyo.oslc.domains.auto.AutomationRequest;
+import org.eclipse.lyo.oslc.domains.auto.AutomationResult;
+import org.eclipse.lyo.oslc4j.core.model.Link;
import org.eclipse.lyo.samples.client.jazz.automation.impl.AutomationAdapter;
import org.eclipse.lyo.samples.client.jazz.automation.impl.AutomationException;
import org.eclipse.lyo.samples.client.jazz.automation.impl.AutomationRequestCanceledException;
@@ -191,7 +191,7 @@ public AutomationResult handleAutomationRequest(AutomationRequest request, Autom
adapter.sendProgressForRequest(50, request);
// execute the script with the parameters from the Automation Request
- executeScript(script, request.getInputParameters(), adapter, request);
+ executeScript(script, request.getInputParameter(), adapter, request);
// Upload an attachment for the result
File attachment = getSampleFile();
@@ -202,11 +202,11 @@ public AutomationResult handleAutomationRequest(AutomationRequest request, Autom
// Add some rich text to the result
Element xhtmlTableElement = createXhtmlTable();
- QName contributionQname = new QName(AutomationConstants.AUTOMATION_DOMAIN, "contribution");
+ QName contributionQname = new QName(AUTOMATION_DOMAIN, "contribution");
result.getExtendedProperties().put(contributionQname, xhtmlTableElement);
// Set the verdict for the result
- result.addVerdict(new URI(AutomationConstants.VERDICT_PASSED));
+ result.addVerdict(new Link(new URI(VERDICT_PASSED)));
// Save the end time in the result
result.getExtendedProperties().put(PROPERTY_RQM_END_TIME, new Date(System.currentTimeMillis()));
@@ -214,7 +214,10 @@ public AutomationResult handleAutomationRequest(AutomationRequest request, Autom
// update progress indication
adapter.sendProgressForRequest(99, request);
- log.info("Returning a result with verdict {}", result.getVerdicts()[0]);
+ Link[] verdicts = result.getVerdict().toArray(new Link[0]);
+ if (verdicts.length > 0) {
+ log.info("Returning a result with verdict {}", verdicts[0]);
+ }
} catch (AutomationRequestCanceledException e) {
@@ -248,7 +251,7 @@ public AutomationResult handleAutomationRequest(AutomationRequest request, Autom
* @throws IOException
*/
private void executeScript(
- Document script, ParameterInstance[] inputParameters, AutomationAdapter adapter, AutomationRequest request)
+ Document script, Set inputParameters, AutomationAdapter adapter, AutomationRequest request)
throws InterruptedException, AutomationException, IOException, URISyntaxException {
String scriptTitle = script.getDocumentElement()
@@ -259,9 +262,18 @@ private void executeScript(
log.info("Running script named '{}'", scriptTitle);
log.info("Input parameters:");
- for (ParameterInstance parameter : inputParameters) {
- String paramStr = "\t" + parameter.getName() + ": " + parameter.getValue();
- log.info(paramStr);
+ if (inputParameters != null) {
+ for (Link parameterLink : inputParameters) {
+ // Note: The new oslc-domains AutomationRequest maps inputParameter to Set.
+ // If the parameter is an inline resource (as is common in Automation), the Link might
+ // not contain the detailed properties (name, value) unless we fetch it or parse the model manually.
+ // For now, we log the link.
+ String paramStr = "\tParameter Link: " + parameterLink.getValue();
+ if (parameterLink.getLabel() != null) {
+ paramStr += " (" + parameterLink.getLabel() + ")";
+ }
+ log.info(paramStr);
+ }
}
/*
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
index 4fd3302..40b25d3 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
@@ -45,11 +45,10 @@
import org.eclipse.lyo.client.RootServicesHelper;
import org.eclipse.lyo.client.exception.ResourceNotFoundException;
import org.eclipse.lyo.client.exception.RootServicesException;
-import org.eclipse.lyo.client.oslc.resources.AutomationConstants;
-import org.eclipse.lyo.client.oslc.resources.AutomationPlan;
-import org.eclipse.lyo.client.oslc.resources.AutomationRequest;
-import org.eclipse.lyo.client.oslc.resources.AutomationResult;
-import org.eclipse.lyo.client.oslc.resources.TestScript;
+import org.eclipse.lyo.oslc.domains.auto.AutomationPlan;
+import org.eclipse.lyo.oslc.domains.auto.AutomationRequest;
+import org.eclipse.lyo.oslc.domains.auto.AutomationResult;
+import org.eclipse.lyo.oslc.domains.qm.TestScript;
import org.eclipse.lyo.oslc4j.core.annotation.OslcDescription;
import org.eclipse.lyo.oslc4j.core.annotation.OslcName;
import org.eclipse.lyo.oslc4j.core.annotation.OslcNamespace;
@@ -491,10 +490,8 @@ private void saveResult(AutomationResult result, AutomationRequest request)
e.printStackTrace();
}
- resultCreationFactoryUrl = client.lookupCreationFactory(
- serviceProviderUrl,
- AutomationConstants.AUTOMATION_DOMAIN,
- AutomationConstants.TYPE_AUTOMATION_RESULT);
+ resultCreationFactoryUrl =
+ client.lookupCreationFactory(serviceProviderUrl, AUTOMATION_DOMAIN, TYPE_AUTOMATION_RESULT);
}
response = client.createResource(resultCreationFactoryUrl, result, OslcMediaType.APPLICATION_RDF_XML);
@@ -526,7 +523,8 @@ private void completeRequest(AutomationRequest request)
assertNotCanceled(request);
- request.setStates(new URI[] {URI.create(AutomationConstants.STATE_COMPLETE)});
+ // oslc-domains AutomationRequest.setState uses Set
+ request.setState(new java.util.HashSet<>(Arrays.asList(new Link(URI.create(STATE_COMPLETE)))));
request.getExtendedProperties().remove(PROPERTY_RQM_PROGRESS);
@@ -582,8 +580,7 @@ private String getNextAssignmentUrl() throws AutomationException, IOException, U
model.read(is, assignedWorkUrl.toString());
}
- StmtIterator stmtIter =
- model.listStatements(null, RDF.type, model.createResource(AutomationConstants.TYPE_AUTOMATION_REQUEST));
+ StmtIterator stmtIter = model.listStatements(null, RDF.type, model.createResource(TYPE_AUTOMATION_REQUEST));
if (stmtIter.hasNext()) {
return stmtIter.next().getSubject().getURI();
@@ -614,7 +611,7 @@ private AutomationRequest takeAssignment(String requestUrl)
request.getExtendedProperties().put(PROPERTY_RQM_TAKEN, Boolean.TRUE);
- request.setStates(new URI[] {URI.create(AutomationConstants.STATE_IN_PROGRESS)});
+ request.setState(new java.util.HashSet<>(Arrays.asList(new Link(URI.create(STATE_IN_PROGRESS)))));
updateUri = appendOslcProperties(URI.create(requestUrl), "oslc_auto:state", "rqm_auto:taken");
@@ -674,8 +671,8 @@ public void register() throws AutomationException, IOException, URISyntaxExcepti
e.printStackTrace();
}
- adapterCreationFactoryUrl = client.lookupCreationFactory(
- serviceProviderUrl, AutomationConstants.AUTOMATION_DOMAIN, TYPE_AUTOMATION_ADAPTER);
+ adapterCreationFactoryUrl =
+ client.lookupCreationFactory(serviceProviderUrl, AUTOMATION_DOMAIN, TYPE_AUTOMATION_ADAPTER);
response = client.createResource(adapterCreationFactoryUrl, this, OslcMediaType.APPLICATION_RDF_XML);
@@ -841,7 +838,29 @@ public Document getScriptDocument(AutomationRequest request)
TestScript script = client.getResource(scriptURI.toString(), OslcMediaType.APPLICATION_RDF_XML)
.readEntity(TestScript.class);
- URI scriptUri = (URI) script.getExtendedProperties().get(PROPERTY_DC_RELATION);
+ // oslc-domains TestScript uses Link for dcterms:relation, likely extended property in old code?
+ // Actually in oslc-domains ILinkType has Set relation.
+ // But TestScript implements ITestScript.
+ // AbstractResource has extendedProperties.
+ // The old code used PROPERTY_DC_RELATION from extended properties if not in class.
+ // In oslc-domains, TestScript might not have relation getter.
+ // AbstractResource does not have relation.
+
+ // PROPERTY_DC_RELATION is "http://purl.org/dc/terms/relation".
+ // Let's use extended properties as before.
+
+ Object relationObj = script.getExtendedProperties().get(PROPERTY_DC_RELATION);
+ URI scriptUri = null;
+ if (relationObj instanceof URI) {
+ scriptUri = (URI) relationObj;
+ } else if (relationObj instanceof Link) {
+ scriptUri = ((Link) relationObj).getValue();
+ }
+
+ if (scriptUri == null) {
+ // Try to find if it's mapped to a field? No easy way.
+ throw new AutomationException("TestScript relation property not found.");
+ }
is = client.getResource(scriptUri.toString(), OslcMediaType.APPLICATION_XML)
.readEntity(InputStream.class);
@@ -899,7 +918,8 @@ private void populateResultFromRequest(AutomationRequest request, AutomationResu
Link automationPlan = request.getExecutesAutomationPlan();
- result.setInputParameters(request.getInputParameters());
+ // oslc-domains AutomationResult uses Set for inputParameter
+ result.setInputParameter(request.getInputParameter());
Map requestExtProperties = request.getExtendedProperties();
@@ -1194,10 +1214,10 @@ public void cancel(AutomationRequest request) throws AutomationException {
throw new AutomationException("The adapter has not logged into the server.");
}
- request.setDesiredState(URI.create(AutomationConstants.STATE_CANCELED));
+ request.setDesiredState(new Link(URI.create(STATE_CANCELED)));
// Some automation providers require the client to set the state to canceled
- request.setStates(new URI[] {URI.create(AutomationConstants.STATE_CANCELED)});
+ request.setState(new java.util.HashSet<>(Arrays.asList(new Link(URI.create(STATE_CANCELED)))));
URI updateUri = appendOslcProperties(request.getAbout(), "oslc_auto:state");
@@ -1241,10 +1261,14 @@ private void assertNotCanceled(AutomationRequest request)
.readEntity(AutomationRequest.class);
}
- // oslc_auto:state is defined as one-or-many in the specification
- URI stateUri = requestAtServiceProvider.getStates()[0];
+ // oslc_auto:state is defined as zero-or-many in oslc-domains (Set)
+ Set states = requestAtServiceProvider.getState();
+ URI stateUri = null;
+ if (states != null && !states.isEmpty()) {
+ stateUri = states.iterator().next().getValue();
+ }
- if (URI.create(AutomationConstants.STATE_CANCELED).equals(stateUri)) {
+ if (URI.create(STATE_CANCELED).equals(stateUri)) {
throw new AutomationRequestCanceledException(request);
}
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationRequestCanceledException.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationRequestCanceledException.java
index 92872f6..a5dd015 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationRequestCanceledException.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationRequestCanceledException.java
@@ -16,7 +16,7 @@
package org.eclipse.lyo.samples.client.jazz.automation.impl;
import java.io.Serial;
-import org.eclipse.lyo.client.oslc.resources.AutomationRequest;
+import org.eclipse.lyo.oslc.domains.auto.AutomationRequest;
/** An exception thrown when an AutomationRequest has been canceled */
public class AutomationRequestCanceledException extends AutomationException {
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IAutomationRequestHandler.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IAutomationRequestHandler.java
index b1654d7..98cdbd8 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IAutomationRequestHandler.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IAutomationRequestHandler.java
@@ -15,8 +15,8 @@
*/
package org.eclipse.lyo.samples.client.jazz.automation.impl;
-import org.eclipse.lyo.client.oslc.resources.AutomationRequest;
-import org.eclipse.lyo.client.oslc.resources.AutomationResult;
+import org.eclipse.lyo.oslc.domains.auto.AutomationRequest;
+import org.eclipse.lyo.oslc.domains.auto.AutomationResult;
public interface IAutomationRequestHandler {
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
index 12f1a83..1195f4e 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
@@ -28,6 +28,15 @@ public interface IConstants {
String TYPE_STATUS_RESPONSE = NAMESPACE_URI_JAZZ_AUTO_RQM + "StatusResponse";
String TYPE_MESSAGE = NAMESPACE_URI_JAZZ_AUTO_RQM + "Message";
+ // OSLC Automation Constants
+ String AUTOMATION_DOMAIN = "http://open-services.net/ns/auto#";
+ String TYPE_AUTOMATION_REQUEST = AUTOMATION_DOMAIN + "AutomationRequest";
+ String TYPE_AUTOMATION_RESULT = AUTOMATION_DOMAIN + "AutomationResult";
+ String STATE_COMPLETE = AUTOMATION_DOMAIN + "Complete";
+ String STATE_IN_PROGRESS = AUTOMATION_DOMAIN + "InProgress";
+ String STATE_CANCELED = AUTOMATION_DOMAIN + "Canceled";
+ String VERDICT_PASSED = AUTOMATION_DOMAIN + "Passed";
+
QName PROPERTY_DC_RELATION = new QName(OSLCConstants.DC, "relation");
QName PROPERTY_QM_REPORTS_ON_TEST_CASE = new QName(OSLCConstants.OSLC_QM_V2, "reportsOnTestCase");
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/CMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/CMSample.java
index b40d90b..971222f 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/CMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/CMSample.java
@@ -33,10 +33,10 @@
import org.apache.http.ssl.SSLContextBuilder;
import org.eclipse.lyo.client.OSLCConstants;
import org.eclipse.lyo.client.OslcClient;
-import org.eclipse.lyo.client.oslc.resources.ChangeRequest;
import org.eclipse.lyo.client.query.OslcQuery;
import org.eclipse.lyo.client.query.OslcQueryParameters;
import org.eclipse.lyo.client.query.OslcQueryResult;
+import org.eclipse.lyo.oslc.domains.cm.ChangeRequest;
import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
@@ -157,7 +157,7 @@ public static void main(String[] args) throws ParseException {
// SCENARIO C: ChangeRequest creation and update
ChangeRequest newChangeRequest = new ChangeRequest();
newChangeRequest.setTitle("Update database schema");
- newChangeRequest.setTitle("Need to update the database schema to reflect the data model changes");
+ newChangeRequest.setDescription("Need to update the database schema to reflect the data model changes");
rawResponse = client.createResource(creationFactory, newChangeRequest, OSLCConstants.CT_RDF);
int statusCode = rawResponse.getStatus();
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/RMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/RMSample.java
index 9ce41b3..5cffae6 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/RMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/oslc4j/RMSample.java
@@ -29,10 +29,10 @@
import org.apache.http.HttpStatus;
import org.eclipse.lyo.client.OSLCConstants;
import org.eclipse.lyo.client.OslcClient;
-import org.eclipse.lyo.client.oslc.resources.Requirement;
import org.eclipse.lyo.client.query.OslcQuery;
import org.eclipse.lyo.client.query.OslcQueryParameters;
import org.eclipse.lyo.client.query.OslcQueryResult;
+import org.eclipse.lyo.oslc.domains.rm.Requirement;
/**
* Samples of accessing a generic Requirements Management provider and running OSLC operations.
@@ -115,7 +115,7 @@ public static void main(String[] args) throws ParseException {
// SCENARIO C: Requirement creation and update
Requirement newRequirement = new Requirement();
newRequirement.setTitle("Database schema needs new attributes");
- newRequirement.setTitle("The data model needs to support new attributes");
+ newRequirement.setDescription("The data model needs to support new attributes");
rawResponse = client.createResource(creationFactory, newRequirement, OSLCConstants.CT_RDF);
int statusCode = rawResponse.getStatus();
From 078782d3d3df48c58dd23502793b785aebfe0c0a Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Sat, 22 Nov 2025 12:52:47 +0000
Subject: [PATCH 2/7] Migrate lyo-client-samples to use oslc-domains
Updated lyo-client-samples to use domain classes from oslc-domains artifact instead of the legacy oslc-java-client-resources.
Updated pom.xml to depend on oslc-domains.
Modified samples to handle API changes:
- Package changes for QM, CM, RM, Automation domains.
- Set types handling (Set instead of arrays).
- Added missing constants in IConstants.java.
- Handled ParameterInstance type change in AutomationRequest (changed from array to Set).
- Replaced getRdfTypes() with setting rdf:type via setTypes() and retrieving it via getTypes().
- Verified with mvn verify.
---
.../java/org/eclipse/lyo/samples/client/jazz/ETMSample.java | 2 ++
.../java/org/eclipse/lyo/samples/client/jazz/EWMSample.java | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
index d2cef0c..96573c4 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/ETMSample.java
@@ -25,6 +25,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
+import java.util.Collections;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
@@ -165,6 +166,7 @@ public static void main(String[] args) throws ParseException {
+ " content fully complies with accessibility standards");
testcase.addTestsChangeRequest(new Link(
new URI("http://cmprovider/changerequest/1"), "Implement accessibility in Pet Store application"));
+ testcase.setTypes(Collections.singleton(URI.create(OSLCConstants.OSLC_QM_V2 + "TestCase")));
String testcaseCreation = client.lookupCreationFactory(
serviceProviderUrl,
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
index f33213b..2296160 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
@@ -234,6 +234,9 @@ public static void main(String[] args) throws ParseException {
// dcterms:type
task.getExtendedProperties().put(new QName(OslcConstants.DCTERMS_NAMESPACE, "type"), "task");
+ // Set rdf:type for Creation Factory lookup
+ task.setTypes(java.util.Collections.singleton(URI.create(OSLCConstants.OSLC_CM_V2 + "ChangeRequest")));
+
// Get the Creation Factory URL for task change requests so that we can create one
CreationFactory taskCreation = client.lookupCreationFactoryResource(
serviceProviderUrl,
@@ -301,6 +304,9 @@ public static void main(String[] args) throws ParseException {
defect.getExtendedProperties().put(new QName(OslcConstants.DCTERMS_NAMESPACE, "type"), "defect");
+ // Set rdf:type for Creation Factory lookup
+ defect.setTypes(java.util.Collections.singleton(URI.create(OSLCConstants.OSLC_CM_V2 + "ChangeRequest")));
+
// Get the Creation Factory URL for change requests so that we can create one
CreationFactory defectCreation = client.lookupCreationFactoryResource(
serviceProviderUrl,
From 85ae15dc2d447d035a11c9f48ac6419ff0e9bca2 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Sat, 22 Nov 2025 17:04:06 +0000
Subject: [PATCH 3/7] Migrate lyo-client-samples to use oslc-domains
Updated lyo-client-samples to use domain classes from oslc-domains artifact instead of the legacy oslc-java-client-resources.
Updated pom.xml to depend on oslc-domains.
Refactored samples to:
- Use oslc-domains classes (AutomationRequest, AutomationResult, etc.)
- Use oslc-domains constants where available (Oslc_autoDomainConstants, Oslc_qmDomainConstants).
- Handle API changes (e.g. Set for relationships).
- Explicitly set rdf:type using setTypes() for CreationFactory lookups.
- Ensure tests pass.
---
.../jazz/automation/ETMAutomationSample.java | 3 +-
.../jazz/automation/impl/IConstants.java | 33 ++++++++++++-------
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
index 97bd430..84ce87b 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/ETMAutomationSample.java
@@ -41,6 +41,7 @@
import org.eclipse.lyo.samples.client.jazz.automation.impl.AutomationException;
import org.eclipse.lyo.samples.client.jazz.automation.impl.AutomationRequestCanceledException;
import org.eclipse.lyo.samples.client.jazz.automation.impl.IAutomationRequestHandler;
+import org.eclipse.lyo.oslc.domains.auto.Oslc_autoDomainConstants;
import org.eclipse.lyo.samples.client.jazz.automation.impl.IConstants;
import org.eclipse.lyo.samples.client.jazz.automation.impl.Message;
import org.eclipse.lyo.samples.client.jazz.automation.impl.StatusResponse;
@@ -202,7 +203,7 @@ public AutomationResult handleAutomationRequest(AutomationRequest request, Autom
// Add some rich text to the result
Element xhtmlTableElement = createXhtmlTable();
- QName contributionQname = new QName(AUTOMATION_DOMAIN, "contribution");
+ QName contributionQname = new QName(Oslc_autoDomainConstants.AUTOMATION_NAMSPACE, "contribution");
result.getExtendedProperties().put(contributionQname, xhtmlTableElement);
// Set the verdict for the result
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
index 1195f4e..a3301c1 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/IConstants.java
@@ -17,6 +17,8 @@
import javax.xml.namespace.QName;
import org.eclipse.lyo.client.OSLCConstants;
+import org.eclipse.lyo.oslc.domains.auto.Oslc_autoDomainConstants;
+import org.eclipse.lyo.oslc.domains.qm.Oslc_qmDomainConstants;
public interface IConstants {
@@ -29,21 +31,28 @@ public interface IConstants {
String TYPE_MESSAGE = NAMESPACE_URI_JAZZ_AUTO_RQM + "Message";
// OSLC Automation Constants
- String AUTOMATION_DOMAIN = "http://open-services.net/ns/auto#";
- String TYPE_AUTOMATION_REQUEST = AUTOMATION_DOMAIN + "AutomationRequest";
- String TYPE_AUTOMATION_RESULT = AUTOMATION_DOMAIN + "AutomationResult";
- String STATE_COMPLETE = AUTOMATION_DOMAIN + "Complete";
- String STATE_IN_PROGRESS = AUTOMATION_DOMAIN + "InProgress";
- String STATE_CANCELED = AUTOMATION_DOMAIN + "Canceled";
- String VERDICT_PASSED = AUTOMATION_DOMAIN + "Passed";
+ String AUTOMATION_DOMAIN = Oslc_autoDomainConstants.AUTOMATION_DOMAIN;
+ String TYPE_AUTOMATION_REQUEST = Oslc_autoDomainConstants.AUTOMATIONREQUEST_TYPE;
+ String TYPE_AUTOMATION_RESULT = Oslc_autoDomainConstants.AUTOMATIONRESULT_TYPE;
+ // Constants for States and Verdicts are not in Oslc_autoDomainConstants, but defined in spec.
+ // We keep them here or use hardcoded strings if not available in domains library.
+ // The constants AUTOMATION_NAMSPACE is available.
+ String STATE_COMPLETE = Oslc_autoDomainConstants.AUTOMATION_NAMSPACE + "Complete";
+ String STATE_IN_PROGRESS = Oslc_autoDomainConstants.AUTOMATION_NAMSPACE + "InProgress";
+ String STATE_CANCELED = Oslc_autoDomainConstants.AUTOMATION_NAMSPACE + "Canceled";
+ String VERDICT_PASSED = Oslc_autoDomainConstants.AUTOMATION_NAMSPACE + "Passed";
QName PROPERTY_DC_RELATION = new QName(OSLCConstants.DC, "relation");
- QName PROPERTY_QM_REPORTS_ON_TEST_CASE = new QName(OSLCConstants.OSLC_QM_V2, "reportsOnTestCase");
- QName PROPERTY_QM_RUNS_TEST_CASE = new QName(OSLCConstants.OSLC_QM_V2, "runsTestCase");
- QName PROPERTY_QM_EXECUTES_TEST_SCRIPT = new QName(OSLCConstants.OSLC_QM_V2, "executesTestScript");
- QName PROPERTY_QM_REPORTS_ON_TEST_PLAN = new QName(OSLCConstants.OSLC_QM_V2, "reportsOnTestPlan");
- QName PROPERTY_QM_PRODUCES_TEST_RESULT = new QName(OSLCConstants.OSLC_QM_V2, "producesTestResult");
+ // OSLC QM constants from Oslc_qmDomainConstants where possible
+ // Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE is http://open-services.net/ns/qm#
+ // OSLCConstants.OSLC_QM_V2 is http://open-services.net/ns/qm#
+
+ QName PROPERTY_QM_REPORTS_ON_TEST_CASE = new QName(Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE, "reportsOnTestCase");
+ QName PROPERTY_QM_RUNS_TEST_CASE = new QName(Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE, "runsTestCase");
+ QName PROPERTY_QM_EXECUTES_TEST_SCRIPT = new QName(Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE, "executesTestScript");
+ QName PROPERTY_QM_REPORTS_ON_TEST_PLAN = new QName(Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE, "reportsOnTestPlan");
+ QName PROPERTY_QM_PRODUCES_TEST_RESULT = new QName(Oslc_qmDomainConstants.QUALITY_MANAGEMENT_NAMSPACE, "producesTestResult");
QName PROPERTY_RQM_TAKEN = new QName(IConstants.NAMESPACE_URI_JAZZ_AUTO_RQM, "taken");
QName PROPERTY_RQM_PROGRESS = new QName(IConstants.NAMESPACE_URI_JAZZ_AUTO_RQM, "progress");
From 7da4b0946f2279e48afbd4f5c6f13fd049c9b1f3 Mon Sep 17 00:00:00 2001
From: Andrew Berezovskyi
Date: Fri, 30 Jan 2026 23:03:46 +0100
Subject: [PATCH 4/7] fix: ns
Signed-off-by: Andrew Berezovskyi
---
.../org/eclipse/lyo/samples/client/jazz/EWMSample.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
index 3d65d5a..709cfe6 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
@@ -248,7 +248,9 @@ public static Report run(
task.getExtendedProperties()
.put(
PROPERTY_TESTED_BY_TEST_CASE,
- new Link(new URI("http://qmprovider/testcase/1"), "Accessibility verification using a screen reader"));
+ new Link(
+ new URI("http://qmprovider/testcase/1"),
+ "Accessibility verification using a screen reader"));
task.getExtendedProperties().put(PROPERTY_DCTERMS_TYPE, "task");
task.setTypes(Collections.singleton(URI.create(OSLCConstants.CM_CHANGE_REQUEST_TYPE)));
@@ -333,7 +335,9 @@ public static Report run(
"An error occurred when I tried to log in with a user ID that contained the '@'" + " symbol.");
defect.getExtendedProperties()
- .put(PROPERTY_TESTED_BY_TEST_CASE, new Link(new URI("http://qmprovider/testcase/3"), "Global Verifcation Test"));
+ .put(
+ PROPERTY_TESTED_BY_TEST_CASE,
+ new Link(new URI("http://qmprovider/testcase/3"), "Global Verifcation Test"));
defect.getExtendedProperties().put(PROPERTY_DCTERMS_TYPE, "defect");
defect.setTypes(Collections.singleton(URI.create(OSLCConstants.CM_CHANGE_REQUEST_TYPE)));
From d864f5008d8f21d556113e27c18cb6c927b2ab3d Mon Sep 17 00:00:00 2001
From: Andrew Berezovskyi
Date: Fri, 30 Jan 2026 23:19:01 +0100
Subject: [PATCH 5/7] chore: format
Signed-off-by: Andrew Berezovskyi
---
.../client/jazz/automation/impl/AutomationAdapter.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
index e4d4598..6e495df 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
@@ -834,10 +834,10 @@ public Document getScriptDocument(AutomationRequest request)
Object relationObj = script.getExtendedProperties().get(PROPERTY_DC_RELATION);
URI scriptUri = null;
- if (relationObj instanceof URI) {
- scriptUri = (URI) relationObj;
- } else if (relationObj instanceof Link) {
- scriptUri = ((Link) relationObj).getValue();
+ if (relationObj instanceof URI rI) {
+ scriptUri = rI;
+ } else if (relationObj instanceof Link link) {
+ scriptUri = link.getValue();
}
if (scriptUri == null) {
From 30df4a0cc85454e6d4eef041445a7bedc1ff8c0d Mon Sep 17 00:00:00 2001
From: Andrew Berezovskyi
Date: Fri, 30 Jan 2026 23:29:13 +0100
Subject: [PATCH 6/7] Update
lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.../jazz/automation/impl/AutomationAdapter.java | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
index 6e495df..c497df1 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
@@ -821,17 +821,7 @@ public Document getScriptDocument(AutomationRequest request)
TestScript script = client.getResource(scriptURI.toString(), OslcMediaType.APPLICATION_RDF_XML)
.readEntity(TestScript.class);
- // oslc-domains TestScript uses Link for dcterms:relation, likely extended property in old code?
- // Actually in oslc-domains ILinkType has Set relation.
- // But TestScript implements ITestScript.
- // AbstractResource has extendedProperties.
- // The old code used PROPERTY_DC_RELATION from extended properties if not in class.
- // In oslc-domains, TestScript might not have relation getter.
- // AbstractResource does not have relation.
-
- // PROPERTY_DC_RELATION is "http://purl.org/dc/terms/relation".
- // Let's use extended properties as before.
-
+ // Access dcterms:relation via extended properties because TestScript does not provide a direct getter for this property.
Object relationObj = script.getExtendedProperties().get(PROPERTY_DC_RELATION);
URI scriptUri = null;
if (relationObj instanceof URI rI) {
From 553c2225176cd4dad3bea5996d324c616a18f8a8 Mon Sep 17 00:00:00 2001
From: Andrew Berezovskyi
Date: Fri, 30 Jan 2026 23:31:24 +0100
Subject: [PATCH 7/7] chore
Signed-off-by: Andrew Berezovskyi
---
.../java/org/eclipse/lyo/samples/client/jazz/EWMSample.java | 2 +-
.../samples/client/jazz/automation/impl/AutomationAdapter.java | 3 ++-
.../org/eclipse/lyo/samples/client/jazz/JazzSnapshotTest.ss | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
index 709cfe6..2ce3208 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/EWMSample.java
@@ -337,7 +337,7 @@ public static Report run(
defect.getExtendedProperties()
.put(
PROPERTY_TESTED_BY_TEST_CASE,
- new Link(new URI("http://qmprovider/testcase/3"), "Global Verifcation Test"));
+ new Link(new URI("http://qmprovider/testcase/3"), "Global Verification Test"));
defect.getExtendedProperties().put(PROPERTY_DCTERMS_TYPE, "defect");
defect.setTypes(Collections.singleton(URI.create(OSLCConstants.CM_CHANGE_REQUEST_TYPE)));
diff --git a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
index c497df1..646b724 100644
--- a/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
+++ b/lyo-client-samples/src/main/java/org/eclipse/lyo/samples/client/jazz/automation/impl/AutomationAdapter.java
@@ -821,7 +821,8 @@ public Document getScriptDocument(AutomationRequest request)
TestScript script = client.getResource(scriptURI.toString(), OslcMediaType.APPLICATION_RDF_XML)
.readEntity(TestScript.class);
- // Access dcterms:relation via extended properties because TestScript does not provide a direct getter for this property.
+ // Access dcterms:relation via extended properties because TestScript does not provide a direct getter for
+ // this property.
Object relationObj = script.getExtendedProperties().get(PROPERTY_DC_RELATION);
URI scriptUri = null;
if (relationObj instanceof URI rI) {
diff --git a/lyo-client-samples/src/test/java/org/eclipse/lyo/samples/client/jazz/JazzSnapshotTest.ss b/lyo-client-samples/src/test/java/org/eclipse/lyo/samples/client/jazz/JazzSnapshotTest.ss
index f3f9abc..28fd0ab 100644
--- a/lyo-client-samples/src/test/java/org/eclipse/lyo/samples/client/jazz/JazzSnapshotTest.ss
+++ b/lyo-client-samples/src/test/java/org/eclipse/lyo/samples/client/jazz/JazzSnapshotTest.ss
@@ -300,7 +300,7 @@ _:Bb1 "An error occurred when I tried to
_:Bb1 "Error logging in"^^ .
_:Bb1 "defect" .
_:Bb1 .
-_:Bb2 "Global Verifcation Test" .
+_:Bb2 "Global Verification Test" .
_:Bb2 .
_:Bb2 .
_:Bb2 _:Bb1 .