/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.jdbc.remote.connections; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.jena.fuseki.ServerCtl ; import org.apache.jena.jdbc.JdbcCompatibility; import org.apache.jena.jdbc.connections.JenaConnection; import org.apache.jena.jdbc.utils.TestUtils; import org.apache.jena.query.Dataset ; import org.junit.* ; /** * Tests for the {@link RemoteEndpointConnection} where we force the default * graph to be a named graph and use connection URL parameters to ensure desired * default graph is used * */ public class TestRemoteEndpointConnectionWithGraphUris extends AbstractRemoteEndpointConnectionTests { /** * Constant used for default graph URI in these tests */ private static final String DEFAULT_GRAPH_URI = "http://example.org/defaultGraph"; @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); } @AfterClass public static void ctlAfterClass() { ServerCtl.ctlAfterClass(); } @Before public void ctlBeforeTest() { ServerCtl.ctlBeforeTest(); } @After public void ctlAfterTest() { ServerCtl.ctlAfterTest(); } @Override protected boolean supportsTimeouts() { // While timeouts are supported they are unreliable for remote // connections return false; } @Override protected JenaConnection getConnection() throws SQLException { List<String> defaultGraphs = new ArrayList<String>(); defaultGraphs.add(DEFAULT_GRAPH_URI); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphs, null, defaultGraphs, null, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } @Override protected JenaConnection getConnection(Dataset ds) throws SQLException { List<String> defaultGraphs = new ArrayList<String>(); defaultGraphs.add(DEFAULT_GRAPH_URI); List<String> namedGraphs = new ArrayList<String>(); Iterator<String> names = ds.listNames(); while (names.hasNext()) { String name = names.next(); if (!DEFAULT_GRAPH_URI.equals(name)) { namedGraphs.add(name); } } // Set up the dataset ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI); Assert.assertEquals(0, ds.getDefaultModel().size()); TestUtils.copyToRemoteDataset(ds, ServerCtl.serviceGSP()); return new RemoteEndpointConnection(ServerCtl.serviceQuery(), ServerCtl.serviceUpdate(), defaultGraphs, namedGraphs, defaultGraphs, namedGraphs, null, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT, null, null); } @Override protected boolean usesNamedGraphAsDefault() { return true; } @Override protected String getDefaultGraphName() { return DEFAULT_GRAPH_URI; } }