X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.app.core%2Fsrc%2Forg%2Fargeo%2Fapp%2Fcore%2FSuiteContentNamespace.java;fp=org.argeo.app.core%2Fsrc%2Forg%2Fargeo%2Fapp%2Fcore%2FSuiteContentNamespace.java;h=46456493b115a81f682a14bb2b3d17e27c42b568;hp=6b5ab3c45bed02dd651c5acf76ca0871e86dd99e;hb=ddc605514409368c46a8dadbbd914c4b1e61596a;hpb=db14c82991d4e17c45b2a5789dd94a6a839f5eaa diff --git a/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java b/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java index 6b5ab3c..4645649 100644 --- a/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java +++ b/org.argeo.app.core/src/org/argeo/app/core/SuiteContentNamespace.java @@ -1,16 +1,21 @@ package org.argeo.app.core; +import static java.lang.System.Logger.Level.ERROR; + import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.util.Objects; import org.argeo.api.acr.spi.ContentNamespace; +import org.argeo.cms.acr.CmsContentNamespace; public enum SuiteContentNamespace implements ContentNamespace { // // ARGEO // - ENTITY("entity", "http://www.argeo.org/ns/entity", "/org/argeo/app/api/entity.xsd", null), + ENTITY("entity", "http://www.argeo.org/ns/entity", + "platform:/plugin/org.argeo.app.api/org/argeo/api/app/entity.xsd", null), // ARGEO_DBK("argeodbk", "http://www.argeo.org/ns/argeodbk", null, null), // @@ -46,7 +51,10 @@ public enum SuiteContentNamespace implements ContentNamespace { ODK("odk", "http://www.opendatakit.org/xforms", null, null), // WGS84("geo", "http://www.w3.org/2003/01/geo/wgs84_pos#", null, null), + // Re-add XML in order to solve import issue with xlink + XML("xml", "http://www.w3.org/XML/1998/namespace", "xml.xsd", "http://www.w3.org/2001/xml.xsd"), // + ; private final static String RESOURCE_BASE = "/org/argeo/app/core/schemas/"; @@ -62,11 +70,23 @@ public enum SuiteContentNamespace implements ContentNamespace { Objects.requireNonNull(namespace); this.namespace = namespace; if (resourceFileName != null) { - if (!resourceFileName.startsWith("/")) - resource = getClass().getResource(RESOURCE_BASE + resourceFileName); - else - resource = getClass().getResource(resourceFileName); - Objects.requireNonNull(resource); + try { + // FIXME workaround when in nested OSGi frameworks + // we should use class path, as before + if (!resourceFileName.startsWith("platform:")) { + resource = URI.create("platform:/plugin/org.argeo.app.core" + RESOURCE_BASE + resourceFileName) + .toURL(); + } else { + resource = URI.create(resourceFileName).toURL(); + } + } catch (MalformedURLException e) { + resource = null; + System.getLogger(CmsContentNamespace.class.getName()).log(ERROR, + "Cannot load " + resourceFileName + ": " + e.getMessage()); + // throw new IllegalArgumentException("Cannot convert " + resourceFileName + " + // to URL"); + } + // Objects.requireNonNull(resource); } if (publicUrl != null) try {