[Mulgara-svn] r479 - branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver
andrae at mulgara.org
andrae at mulgara.org
Fri Oct 12 10:49:03 UTC 2007
Author: andrae
Date: 2007-10-12 05:49:02 -0500 (Fri, 12 Oct 2007)
New Revision: 479
Modified:
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BasicDatabaseSessionUnitTest.java
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BootstrapOperation.java
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/Database.java
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseMetadataImpl.java
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseOperationContext.java
branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/XADatabaseSessionUnitTest.java
Log:
Passes all the basic tests - having trouble with the system-model.
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BasicDatabaseSessionUnitTest.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BasicDatabaseSessionUnitTest.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BasicDatabaseSessionUnitTest.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -229,8 +229,8 @@
URI systemModel = ((URIReferenceImpl)answer.getObject(0)).getURI();
assertEquals("rdfdb", systemModel.getScheme());
// Note: The Authority is a UUID and therefore non-deterministic
- assertEquals("/_database", systemModel.getPath());
- assertEquals("", systemModel.getFragment());
+ assertEquals("/", systemModel.getPath());
+ assertEquals(null, systemModel.getFragment());
assertFalse(answer.next());
// Compose the expected result of the query
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BootstrapOperation.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BootstrapOperation.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/BootstrapOperation.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -97,8 +97,8 @@
new URIReferenceImpl(databaseMetadata.getBootstrapModelURI()));
long rdfType = systemResolver.localizePersistent(
new URIReferenceImpl(databaseMetadata.getRdfTypeURI()));
- long serverURIType = systemResolver.localizePersistent(
- new URIReferenceImpl(databaseMetadata.getServerURIType()));
+// long serverURIType = systemResolver.localizePersistent(
+// new URIReferenceImpl(databaseMetadata.getServerURIType()));
// URI serverURI = retrieveOrCreateServerURI(systemResolver, bootstrapModel, rdfType, serverURIType, metadata);
// databaseMetadata.setServerURI(serverURI); // Also sets the system-model-uri (appends a #)
@@ -133,10 +133,10 @@
systemResolver.modifyModel(preModel,
new SingletonStatements(preSubject, prePredicate, rdfType),
true);
+// systemResolver.modifyModel(preModel,
+// new SingletonStatements(preSubject, prePredicate, serverURIType),
+// true);
systemResolver.modifyModel(preModel,
- new SingletonStatements(preSubject, prePredicate, serverURIType),
- true);
- systemResolver.modifyModel(preModel,
new SingletonStatements(preSubject, prePredicate, systemModel),
true);
systemResolver.modifyModel(preModel,
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/Database.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/Database.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/Database.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -902,7 +902,7 @@
// if (currentHost != null) {
// hostNames.add(currentHost.toLowerCase());
// }
- return Collections.unmodifiableSet(hostNames);
+ return hostNames;
}
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseMetadataImpl.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseMetadataImpl.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseMetadataImpl.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -106,14 +106,12 @@
DatabaseMetadataImpl(URI uri, Set hostnameAliases, URI securityDomainURI)
{
logger.debug("Instantiating with uri=" + uri + " hostnameAliases=" + hostnameAliases +
- " securityDomainURI=" + securityDomainURI + " systemModelTypeURI=" + systemModelTypeURI);
+ " securityDomainURI=" + securityDomainURI);
// Validate parameters.
if (uri == null) {
throw new IllegalArgumentException("uri null");
} else if (hostnameAliases == null) {
throw new IllegalArgumentException("hostnameAliases null");
- } else if (systemModelTypeURI == null) {
- throw new IllegalArgumentException("systemModelTypeURI null");
}
this.uri = uri;
@@ -123,13 +121,16 @@
// Set server name from the path part of the server URI.
String[] names = extractNameAndOrgId(uri);
this.serverName = names[0];
+ logger.debug("Setting servername: " + names[0]);
this.orgId = names[1];
+ logger.debug("Setting orgId: " + names[1]);
try {
serverURI = new URI("rdfdb", this.serverName + "~" + this.orgId, null, null, null);
} catch (URISyntaxException eu) {
throw new IllegalArgumentException("Unable to obtain serverURI from databaseURI: " + uri, eu);
}
systemModelURI = serverURI.resolve("/");
+ logger.debug("systemModelURI = " + systemModelURI);
}
@@ -178,31 +179,55 @@
final String DEFAULT_SERVER_NAME = "no_server_name";
final String DEFAULT_ORG_ID = "no.organisation.id";
- if (serverURI.getPath() != null && !serverURI.getPath().equals("")) {
+ final String scheme = serverURI.getScheme();
+ final String auth = serverURI.getAuthority();
+ final String path = serverURI.getPath();
+
+ if (scheme.equals("local")) {
+ logger.debug("local serverURI scheme: " + serverURI);
+ if (auth != null && !auth.equals("") && path != null && !path.equals("")) {
+ return new String[] { path.replaceAll("/", ""), auth.replaceAll("/", "") };
+ } else if (auth != null && !auth.equals("")) {
+ return new String[] { auth.replaceAll("/", ""), "" };
+ } else if (path != null && !path.equals("")) {
+ return new String[] { path.replaceAll("/", ""), "" };
+ } else {
+ return new String[] { DEFAULT_SERVER_NAME, "" };
+ }
+ }
+
+ if (scheme.equals("rdfdb")) {
+ logger.debug("rdfdb serverURI scheme: " + serverURI);
+ String[] result = auth.split("~");
+ if (result.length != 2) {
+ throw new IllegalArgumentException("Invalid rdfdb serverURI: " + serverURI);
+ }
+ return result;
+ }
+
+ if (path != null && !path.equals("")) {
logger.debug("serverURI.path not null/empty: " + serverURI.getPath());
- return new String[] {
- serverURI.getPath().replaceAll("/", ""),
- invertAuthority(serverURI.getAuthority())
- };
- } else if (serverURI.getScheme().equals("local")) {
- logger.debug("serverURI.scheme not null/empty: " + serverURI.getScheme());
- if (serverURI.getAuthority() != null && !serverURI.getAuthority().equals("")) {
- logger.debug("serverURI.authority not null/empty: " + serverURI.getAuthority());
+ if (auth == null || auth.equals("")) {
return new String[] {
- serverURI.getAuthority(),
- DEFAULT_ORG_ID
+ path.replaceAll("/", ""),
+ invertAuthority(auth)
};
+ } else {
+ return new String[] {
+ path.replaceAll("/", ""),
+ DEFAULT_ORG_ID
+ };
}
- if (serverURI.getSchemeSpecificPart() != null && !serverURI.getSchemeSpecificPart().equals("")) {
- logger.debug("serverURI.ssp not null/empty: " + serverURI.getSchemeSpecificPart());
+ } else {
+ if (auth != null && !auth.equals("")) {
return new String[] {
- serverURI.getSchemeSpecificPart(),
- DEFAULT_ORG_ID
+ DEFAULT_SERVER_NAME,
+ auth
};
+ } else {
+ throw new IllegalArgumentException("Invalid traditional serverURI: " + serverURI);
}
}
-
- return new String[] { DEFAULT_SERVER_NAME, DEFAULT_ORG_ID };
}
/**
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseOperationContext.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseOperationContext.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/DatabaseOperationContext.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -838,13 +838,7 @@
}
if ("local".equals(modelURL.getScheme())) {
- if ((modelURL.getAuthority() != null && metadata.getOrganisationId().equals(modelURL.getAuthority())) ||
- (modelURL.getPath() != null && ("/" + metadata.getServerName()).equals(modelURL.getPath()))) {
- return true;
- } else {
- throw new QueryException("local scheme URL: " + modelURL +
- " doesn't match server-name: " + metadata.getServerName());
- }
+ return checkLocalURL(modelURL);
}
if (modelURL.getScheme() != null && modelURL.getScheme().equals("rdfdb")) {
@@ -879,4 +873,40 @@
return false;
}
+
+ /**
+ * Returns true if valid local url, otherwise throws an appropriately
+ * informative QueryException.
+ */
+ boolean checkLocalURL(URI url) throws QueryException {
+ String auth = url.getAuthority();
+ auth = auth != null ? auth.replaceAll("/", "") : null;
+ String path = url.getPath();
+ path = path != null ? path.replaceAll("/", "") : null;
+ String orgid = metadata.getOrganisationId();
+ String sname = metadata.getServerName();
+ logger.debug("auth = " + auth + "; path = " + path + "; orgid = " + orgid + "; sname = " + sname);
+
+ if ((auth == null || auth.equals("")) && (path == null || path.equals(""))) {
+ throw new QueryException("local scheme url( " + url + ") without authority or path");
+ } else if (path == null || path.equals("")) {
+ if (auth.equals(sname)) {
+ return true; // local://serverName#model
+ } else {
+ throw new QueryException("local scheme url( " + url + ") with no path and authority != " + sname);
+ }
+ } else if (auth == null || auth.equals("")) {
+ if (path.equals(sname)) {
+ return true; // local:///serverName#model
+ } else {
+ throw new QueryException("local scheme url( " + url + ") with no authority and path != " + sname);
+ }
+ } else {
+ if (auth.equals(orgid) && path.equals(sname)) {
+ return true; // local://org.id/serverName#model
+ } else {
+ throw new QueryException("local scheme url( " + url + ") with auth != " + orgid + " and path != " + sname);
+ }
+ }
+ }
}
Modified: branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/XADatabaseSessionUnitTest.java
===================================================================
--- branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/XADatabaseSessionUnitTest.java 2007-10-11 20:33:18 UTC (rev 478)
+++ branches/mgr-58/src/jar/resolver/java/org/mulgara/resolver/XADatabaseSessionUnitTest.java 2007-10-12 10:49:02 UTC (rev 479)
@@ -211,14 +211,14 @@
new String[] { "org.mulgara.resolver.store.StatementStoreResolverFactory" },
"(query V0 (| V0 V4 V2))",
"M11",
- "(result _node87 _node88)",
+ "(result _node85 _node86)",
"testSubjectVarObjModelPrimitive"),
parser.parse("testModel",
new String[] { "org.mulgara.resolver.store.StatementStoreResolverFactory" },
"(query V0 (| V0 V4 V7))",
"M11",
- "(result _node87)",
+ "(result _node85)",
"testSubjectLitObjModelPrimitive"),
parser.parse("testModel",
More information about the Mulgara-svn
mailing list