Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c98cfbb
[SML] Add support for assetType as defined in CS API standard
alexrobin Sep 17, 2025
648c68a
[Core] Mark lastError as volatile so it is immediately visible when
alexrobin Sep 17, 2025
63b1d39
[CSAPI] Add client-side support for bearer token
alexrobin Sep 19, 2025
2c8eaa5
[Core] Log missing jar manifest at trace level
alexrobin Sep 19, 2025
231b45f
[UI] Add multi-select in Admin UI (#311)
earocorn Sep 22, 2025
4a7ff51
[DB] Update obs database test to use correct system UID (#314)
earocorn Sep 22, 2025
1731041
[UI] Keep showing module name in confirmation popup when only one module
alexrobin Sep 22, 2025
277880c
[Core] Start/stop HTTP service modules using internal methods
alexrobin Sep 22, 2025
db4c75d
[SML] Fix time range in conversion from generic feature to SML object
alexrobin Sep 25, 2025
e10e660
[CSAPI] Extract method for reading JSON collection responses
alexrobin Sep 29, 2025
43826d6
[Core] Refactor ICommandResult and CommandResult to align better with CS
alexrobin Sep 29, 2025
c2c75ec
[SWE] Add support for collections of simple types in DataBlockProxy
alexrobin Sep 29, 2025
6ff4508
[CSAPI] Implement new serialization for command results
alexrobin Sep 29, 2025
6eff1c6
[CS API] Fixes in command status serialization + better error handling
alexrobin Oct 2, 2025
675a779
Updates for logging under Java 21 (#317)
nickgaray Oct 10, 2025
195b300
[Core] Don't use immutable lists as they cannot be deserialized from H2
alexrobin Oct 10, 2025
43727e7
[Core] Keep processing commands if submit future completes exceptionally
alexrobin Oct 10, 2025
0c56710
[Core] Re-enable module loggers broken after upgrade to logback 1.5
alexrobin Oct 11, 2025
5f59b5b
[CSAPI] Update JSON property names for control streams and commands (…
tipatterson-dev Oct 22, 2025
1729671
[CSAPI] Fix to deserialize command parameters + set timestamp
alexrobin Oct 22, 2025
a8bfdb7
[Core] Fix concurrency issues when reading from DataBlocks with internal
alexrobin Oct 27, 2025
7bdec8d
[Core] Add method to complete command with result and message (#322)
eferre Oct 31, 2025
e55721c
[HttpServer] Use HandlerCollection instead of HandlerList for dynamic…
earocorn Oct 31, 2025
0830d34
[DB] Add "query by definition" datastore tests (#316)
earocorn Nov 4, 2025
e00a96c
[DB] Add forceReadBackFromStorage and commits in obs store unit tests…
mdhsl Nov 4, 2025
758b8c2
[CSAPI] Client: URL encode IDs + added obs fetch tests (WIP)
alexrobin Nov 4, 2025
850ade0
[H2] Fix to cleanly close feature database
alexrobin Nov 4, 2025
fa0eeea
[CSAPI] Add system query parameter to DataStreams and ControlStreams …
earocorn Dec 2, 2025
9650356
Implement countMatchingEntries() in FederatedObsStore
earocorn Dec 4, 2025
0c5f9e6
remove atomic long reference
earocorn Dec 4, 2025
cac0339
Add support in ObsFilter for CQL2 filter
earocorn Dec 4, 2025
579178a
[DB] Implement countMatchingEntries() in FederatedObsStore (#325)
earocorn Dec 4, 2025
43edc20
Add descending order parameter to TemporalFilter and CSAPI obs,cmd,cm…
earocorn Dec 5, 2025
ae5ea0b
Implement reverse ordering in federated stores
earocorn Dec 8, 2025
bcc5761
Add descending order query param
earocorn Dec 8, 2025
e88b97f
Use default temporal range of (MIN, MAX)
earocorn Dec 9, 2025
e7ad7ed
Spacing
earocorn Dec 9, 2025
7af3a11
Merge fix to temporalfilter
earocorn Dec 9, 2025
7e366fa
Auto-sync updates: docs: Add OSCAR initialization lifecycle documenta…
github-actions[bot] Mar 27, 2026
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
13 changes: 11 additions & 2 deletions common.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,17 @@ subprojects {
Files.list(dir)
.filter { it.toString().endsWith('.class') }
.findAny()
.ifPresent { packageSet.add(rootDir.relativize(dir).toString()
.replace(java.io.File.separatorChar, (char)'.') + '.*') }
.ifPresent {
// Using File.separator in the replace calls on windows does not seem to work and messes up the creation
// of the manifest files
if (rootDir.relativize(dir).toString().contains('\\')) {
packageSet.add(rootDir.relativize(dir).toString()
.replace('\\', '.') + '.*')
} else {
packageSet.add(rootDir.relativize(dir).toString()
.replace('/', '.') + '.*')
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,25 @@ public default String getType()
// use definition or generate default type
if (getDefinition() != null)
return getDefinition();
else if (this instanceof AbstractPhysicalProcess)
return SWEConstants.DEF_SYSTEM;
else
return SWEConstants.DEF_PROCESS;
return SWEConstants.DEF_SYSTEM;
}


public default String getAssetType()
{
// use "AssetType" classifier if available
for (var list: getClassificationList()) {
for (var classifier: list.getClassifierList()) {
if (SWEConstants.DEF_ASSET_TYPE.equals(classifier.getDefinition())) {
return classifier.getValue();
}
}
}

if (!(this instanceof AbstractPhysicalProcess))
return SWEConstants.ASSET_TYPE_PROCESS;

return null;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import net.opengis.gml.v32.AbstractGeometry;
import net.opengis.gml.v32.Point;
import net.opengis.gml.v32.TimeIndeterminateValue;
import net.opengis.gml.v32.TimePeriod;
import net.opengis.gml.v32.impl.ReferenceImpl;
import net.opengis.sensorml.v20.AbstractPhysicalProcess;
import net.opengis.sensorml.v20.AbstractProcess;
Expand Down Expand Up @@ -195,6 +196,28 @@ public B addIdentifier(TermBuilder term)
{
return addIdentifier(term.build());
}

/**
* Adds a custom classifier
* @param label Label of classifier (e.g. "Sensor Type")
* @param def Definition URI of classifier (link to online definition)
* @param value Classifier value
* @return This builder for chaining
*/
public B addClassifier(String label, String def, String codespace, String value)
{
Asserts.checkNotNull(label, "label");
Asserts.checkNotNull(def, "definition");
Asserts.checkNotNull(value, "value");

Term term = smlFac.newTerm();
term.setDefinition(def);
term.setCodeSpace(codespace);
term.setLabel(label);
term.setValue(value);

return addClassifier(term);
}

/**
* Adds a classifier to the default list (first one in document)
Expand Down Expand Up @@ -223,6 +246,12 @@ public B addClassifier(TermBuilder term)
return addClassifier(term.build());
}

public B validTimePeriod(TimePeriod tp)
{
instance.addValidTimeAsTimePeriod(tp);
return (B)this;
}

public B validTimePeriod(OffsetDateTime begin, OffsetDateTime end)
{
var beginPos = gmlFac.newTimePosition();
Expand Down Expand Up @@ -354,6 +383,12 @@ public B definition(String uri)
return (B)this;
}

public B assetType(String term)
{
this.addClassifier("Asset Type", "cs:AssetType", null, term);
return (B)this;
}

public B typeOf(String href)
{
instance.setTypeOf(new ReferenceImpl(href));
Expand Down
4 changes: 2 additions & 2 deletions lib-ogc/swe-common-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ group = 'org.vast.opengis'
description = 'SWE Common Core'

dependencies {
api 'ch.qos.logback:logback-classic:1.2.13'
api 'com.fasterxml.woodstox:woodstox-core:6.2.8'
api 'ch.qos.logback:logback-classic:1.5.13'
api 'com.fasterxml.woodstox:woodstox-core:6.4.0'
api 'com.google.code.gson:gson:2.11.0'
api 'com.google.guava:guava:32.1.3-jre'
api 'net.sf.trove4j:core:3.1.0'
Expand Down
Loading