Package org.apache.jena.fuseki.http

Source Code of org.apache.jena.fuseki.http.UpdateRemote

/*
* 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.fuseki.http;

import java.io.ByteArrayOutputStream ;
import java.io.IOException ;

import org.apache.http.HttpResponse ;
import org.apache.http.client.HttpClient ;
import org.apache.http.client.methods.HttpPost ;
import org.apache.http.entity.AbstractHttpEntity ;
import org.apache.http.entity.ByteArrayEntity ;
import org.apache.http.impl.client.DefaultHttpClient ;
import org.apache.http.protocol.HTTP ;
import org.openjena.atlas.io.IndentedWriter ;
import org.openjena.riot.WebContent ;

import com.hp.hpl.jena.sparql.modify.request.Target ;
import com.hp.hpl.jena.sparql.modify.request.UpdateDrop ;
import com.hp.hpl.jena.sparql.modify.request.UpdateWriter ;
import com.hp.hpl.jena.update.Update ;
import com.hp.hpl.jena.update.UpdateException ;
import com.hp.hpl.jena.update.UpdateRequest ;

public class UpdateRemote
{
    /** Reset the remote repository by execution a "DROP ALL" command on it */
    public static void executeClear(String serviceURL)
    {
        Update clear = new UpdateDrop(Target.ALL) ;
        UpdateRemote.execute(clear, serviceURL) ;
    }
   
    public static void execute(Update request, String serviceURL)
    {
        execute(new UpdateRequest(request) , serviceURL) ;
    }
   
    public static void execute(UpdateRequest request, String serviceURL)
    {
        HttpPost httpPost = new HttpPost(serviceURL) ;
        ByteArrayOutputStream b_out = new ByteArrayOutputStream() ;
        IndentedWriter out = new IndentedWriter(b_out) ;
        UpdateWriter.output(request, out) ;
        out.flush() ;
        byte[] bytes = b_out.toByteArray() ;
        AbstractHttpEntity reqEntity = new ByteArrayEntity(bytes) ;
        reqEntity.setContentType(WebContent.contentTypeSPARQLUpdate) ;
        reqEntity.setContentEncoding(HTTP.UTF_8) ;
        httpPost.setEntity(reqEntity) ;
        HttpClient httpclient = new DefaultHttpClient() ;

        try
        {
            HttpResponse response = httpclient.execute(httpPost) ;
            int responseCode = response.getStatusLine().getStatusCode() ;
            String responseMessage = response.getStatusLine().getReasonPhrase() ;
           
            if ( responseCode == HttpSC.NO_CONTENT_204 )
                return ;
            if ( responseCode == HttpSC.OK_200 )
                // But what was the content?
                // TODO read body
                return ;
            throw new UpdateException(responseCode+" "+responseMessage) ;
        } catch (IOException ex)
        {
            throw new UpdateException(ex) ;
        }
           
    }
}
TOP

Related Classes of org.apache.jena.fuseki.http.UpdateRemote

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.