@@ -47,7 +47,7 @@ public static ResourceType forExtension(String extension) {
4747 case "kwv" -> ONTOLOGY ;
4848 case "kim" -> MODEL_NAMESPACE ;
4949 case "obs" -> STRATEGY ;
50- case "kactor" -> BEHAVIOR ;
50+ case "kactor" , "kactors" -> BEHAVIOR ;
5151 default -> null ;
5252 };
5353 }
@@ -57,7 +57,7 @@ public String getFileExtension() {
5757 case ONTOLOGY -> "kwv" ;
5858 case MODEL_NAMESPACE -> "kim" ;
5959 case STRATEGY -> "obs" ;
60- case BEHAVIOR , TESTCASE , SCRIPT -> "kactor " ;
60+ case BEHAVIOR , TESTCASE , SCRIPT , APPLICATION -> "kactors " ;
6161 default ->
6262 throw new KlabUnimplementedException ("file extension for document of class " + this );
6363 };
@@ -142,23 +142,32 @@ static Pair<ResourceType, String> getDocumentData(String relativeFilePath, Strin
142142 ResourceType type = null ;
143143 String urn = null ;
144144
145+ if (relativeFilePath == null || !relativeFilePath .contains ("." )) {
146+ return null ;
147+ }
148+
145149 var extension = relativeFilePath .substring (relativeFilePath .lastIndexOf ("." ) + 1 );
146150 var path = relativeFilePath .substring (0 , relativeFilePath .lastIndexOf ("." ));
151+ boolean behaviorExtension = "kactor" .equals (extension ) || "kactors" .equals (extension );
147152
148153 if ("json" .equals (extension )) {
149154 // TODO manifest, docs, resource.
150155 if (relativeFilePath .startsWith ("resources" + separator )) {
151- throw new KlabUnimplementedException ( "KAAAAAAAAKKKKKKKKKKKKKKKKKKK" ) ;
156+ return null ;
152157 }
153158 } else {
154159 if (relativeFilePath .startsWith ("src" + separator )) {
155160 type = ResourceType .forExtension (extension );
156161 urn = path .substring ("src" .length () + 1 ).replace (separator , "." );
157- } else if (relativeFilePath .startsWith ("scripts" + separator )) {
158- throw new KlabUnimplementedException ("POOOOOO" );
159- } else if (relativeFilePath .startsWith ("tests" + separator )) {
160- throw new KlabUnimplementedException ("PAAAAAAA" );
161- } else if (relativeFilePath .startsWith ("apps" + separator ) && "apps" .equals (extension )) {
162+ } else if (relativeFilePath .startsWith ("scripts" + separator ) && behaviorExtension ) {
163+ type = ResourceType .SCRIPT ;
164+ urn = path .substring ("scripts" .length () + 1 );
165+ } else if ((relativeFilePath .startsWith ("tests" + separator )
166+ || relativeFilePath .startsWith ("testcases" + separator ))
167+ && behaviorExtension ) {
168+ type = ResourceType .TESTCASE ;
169+ urn = path .substring (relativeFilePath .indexOf (separator ) + separator .length ());
170+ } else if (relativeFilePath .startsWith ("apps" + separator ) && behaviorExtension ) {
162171 type = ResourceType .APPLICATION ;
163172 urn = path .substring ("apps" .length () + 1 );
164173 } else if (relativeFilePath .startsWith ("strategies" + separator ) && "obs" .equals (extension )) {
@@ -191,7 +200,7 @@ static String getRelativeFilePath(String urn, ResourceType type) {
191200 static String getRelativeFilePath (String urn , ResourceType type , String separator ) {
192201 return switch (type ) {
193202 case SCRIPT -> "scripts" + separator + urn + "." + type .getFileExtension ();
194- case TESTCASE -> "tests " + separator + urn + "." + type .getFileExtension ();
203+ case TESTCASE -> "testcases " + separator + urn + "." + type .getFileExtension ();
195204 case APPLICATION -> "apps" + separator + urn + "." + type .getFileExtension ();
196205 case ONTOLOGY , MODEL_NAMESPACE , BEHAVIOR ->
197206 "src" + separator + urn .replace ('.' , separator .charAt (0 )) + "." + type .getFileExtension ();
0 commit comments