You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2015/03/17 12:21:29 UTC
[17/52] [abbrv] jena git commit: Rename folder jena-fuseki to
jena-fuseki1
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/s-update-form
----------------------------------------------------------------------
diff --git a/jena-fuseki/s-update-form b/jena-fuseki/s-update-form
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/s-update-form
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-# 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.
-
-# SPARQL HTTP Update, client.
-
-require 'optparse'
-require 'net/http'
-require 'uri'
-require 'cgi'
-require 'pp'
-require 'ostruct'
-
-# ToDo
-# Allow a choice of media type for GET
-# --accept "content-type" (and abbreviations)
-# --header "Add:this"
-# --user, --password
-# Basic authentication: request.basic_auth("username", "password")
-# Follow redirects => 301: puts response["location"] # All headers are lowercase?
-
-SOH_NAME="SOH"
-SOH_VERSION="0.0.0"
-
-$proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
-
-# What about direct naming?
-
-# Names
-$mtTurtle = 'text/turtle;charset=utf-8'
-$mtRDF = 'application/rdf+xml'
-$mtText = 'text/plain'
-$mtNTriples = 'application/n-triples'
-$mtNQuads = 'application/n-quads'
-$mtJSONLD = 'application/ld+json'
-$mtTriG = 'application/trig'
-$mtSparqlResultsX = 'application/sparql-results+xml'
-$mtSparqlResultsJ = 'application/sparql-results+json'
-$mtAppJSON = 'application/json'
-$mtAppXML = 'application/xml'
-$mtSparqlResultsTSV = 'application/sparql-results+tsv'
-$mtSparqlResultsCSV = 'application/sparql-results+csv'
-$mtSparqlUpdate = 'application/sparql-update'
-$mtWWWForm = 'application/x-www-form-urlencoded'
-$mtSparqlQuery = "application/sparql-query" ;
-
-# Global media type table.
-$fileMediaTypes = {}
-$fileMediaTypes['ttl'] = $mtTurtle
-$fileMediaTypes['n3'] = 'text/n3; charset=utf-8'
-$fileMediaTypes['nt'] = $mtText
-$fileMediaTypes['rdf'] = $mtRDF
-$fileMediaTypes['owl'] = $mtRDF
-$fileMediaTypes['nq'] = $mtNQuads
-$fileMediaTypes['trig'] = $mtTriG
-$fileMediaTypes['json-ld'] = $mtJSONLD
-$fileMediaTypes['jsonld'] = $mtJSONLD
-
-# Global charset : no entry means "don't set"
-$charsetUTF8 = 'utf-8'
-$charset = {}
-$charset[$mtTurtle] = 'utf-8'
-$charset[$mtText] = 'ascii'
-$charset[$mtTriG] = 'utf-8'
-$charset[$mtNQuads] = 'utf-8'
-
-# Headers
-
-$hContentType = 'Content-Type'
-# $hContentEncoding = 'Content-Encoding'
-$hContentLength = 'Content-Length'
-# $hContentLocation = 'Content-Location'
-# $hContentRange = 'Content-Range'
-
-$hAccept = 'Accept'
-$hAcceptCharset = 'Accept-Charset'
-$hAcceptEncoding = 'Accept-Encoding'
-$hAcceptRanges = 'Accept-Ranges'
-
-$headers = { "User-Agent" => "#{SOH_NAME}/Fuseki #{SOH_VERSION}"}
-$print_http = false
-
-# Default for GET
-# At least allow anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , #{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# For SPARQL query
-$accept_results="#{$mtSparqlResultsJ} , #{$mtSparqlResultsX};q=0.9 , #{$accept_rdf}"
-
-# Accept any in case of trouble.
-$accept_rdf="#{$accept_rdf} , */*;q=0.1"
-$accept_results="#{$accept_results} , */*;q=0.1"
-
-# The media type usually forces the charset.
-$accept_charset=nil
-
-## Who we are.
-## Two styles:
-## s-query .....
-## soh query .....
-
-$cmd = File.basename($0)
-if $cmd == 'soh'
-then
- $cmd = (ARGV.size == 0) ? 'soh' : ARGV.shift
-end
-
-if ! $cmd.start_with?('s-') && $cmd != 'soh'
- $cmd = 's-'+$cmd
-end
-
-## --------
-
-def GET(dataset, graph)
- print "GET #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- headers = {}
- headers.merge!($headers)
- headers[$hAccept] = $accept_rdf
- headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
- get_worker(requestURI, headers)
-end
-
-def get_worker(requestURI, headers)
- uri = URI.parse(requestURI)
- request = Net::HTTP::Get.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_print_body(uri, request)
-end
-
-def HEAD(dataset, graph)
- print "HEAD #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- headers = {}
- headers.merge!($headers)
- headers[$hAccept] = $accept_rdf
- headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
- uri = URI.parse(requestURI)
- request = Net::HTTP::Head.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def PUT(dataset, graph, file)
- print "PUT #{dataset} #{graph} #{file}\n" if $verbose
- send_body(dataset, graph, file, Net::HTTP::Put)
-end
-
-def POST(dataset, graph, file)
- print "POST #{dataset} #{graph} #{file}\n" if $verbose
- send_body(dataset, graph, file, Net::HTTP::Post)
-end
-
-def DELETE(dataset, graph)
- print "DELETE #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- uri = URI.parse(requestURI)
- request = Net::HTTP::Delete.new(uri.request_uri)
- headers = {}
- headers.merge!($headers)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def uri_escape(string)
- CGI.escape(string)
-end
-
-def target(dataset, graph)
- return dataset+"?default" if graph == "default"
- return dataset+"?graph="+uri_escape(graph)
-end
-
-def send_body(dataset, graph, file, method)
- mt = content_type(file)
- headers = {}
- headers.merge!($headers)
- headers[$hContentType] = mt
- headers[$hContentLength] = File.size(file).to_s
- ## p headers
-
- requestURI = target(dataset, graph)
- uri = URI.parse(requestURI)
-
- request = method.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- request.body_stream = File.open(file)
- response_no_body(uri, request)
-end
-
-def response_no_body(uri, request)
- http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
- http.read_timeout = nil
- # check we can connect.
- begin http.start
- rescue Exception => e
- # puts e.message
- #puts e.backtrace.inspect
- warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
- end
- response = http.request(request)
- print_http_response(response)
- case response
- when Net::HTTPSuccess, Net::HTTPRedirection
- # OK
- when Net::HTTPNotFound
- warn_exit "404 Not found: #{uri}", 9
- #print response.body
- else
- warn_exit "#{response.code} #{response.message} #{uri}", 9
- # Unreachable
- response.error!
- end
- # NO BODY IN RESPONSE
-end
-
-def response_print_body(uri, request)
- http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
- http.read_timeout = nil
- # check we can connect.
- begin http.start
- rescue => e
- #puts e.backtrace.inspect
- #print e.class
- warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
- end
-
- # Add a blank line if headers were output.
- print "\n" if $http_print ;
-
- begin
- response = http.request(request) { |res|
- print_http_response(res)
- #puts res.code
- res.read_body do |segment|
- print segment
- end
- }
- case response
- when Net::HTTPSuccess, Net::HTTPRedirection
- # OK
- when Net::HTTPNotFound
- warn_exit "404 Not found: #{uri}", 9
- #print response.body
- else
- warn_exit "#{response.code}: #{uri}", 9
- # Unreachable
- response.error!
- end
- rescue EOFError => e
- warn_exit "IO Error: "+e.message, 3
- end
-end
-
-def print_http_request(uri, request)
- return unless $print_http
- #print "Request\n"
- print request.method," ",uri, "\n"
- print_headers(" ",request)
-end
-
-def print_http_response(response)
- return unless $print_http
- #print "Response\n"
- print response.code, " ", response.message, "\n"
- print_headers(" ",response)
-end
-
-def print_headers(marker, headers)
- headers.each do |k,v|
- k = k.split('-').map{|w| w.capitalize}.join('-')+':'
- printf "%s%-20s %s\n",marker,k,v
- end
-end
-
-def content_type(file)
- file =~ /\.([^.]*)$/
- ext = $1
- mt = $fileMediaTypes[ext]
- cs = $charset[mt]
- mt = mt+';charset='+cs if ! cs.nil?
- return mt
-end
-
-def charset(content_type)
- return $charset[content_type]
-end
-
-def warn_exit(msg, rc)
- warn msg
- exit rc ;
-end
-
-def parseURI(uri_string)
- begin
- return URI.parse(uri_string).to_s
- rescue URI::InvalidURIError => err
- warn_exit "Bad URI: <#{uri_string}>", 2
- end
-end
-
-## ---- Command
-
-def cmd_soh(command=nil)
- ## Command line
- options = {}
- optparse = OptionParser.new do |opts|
- # Set a banner, displayed at the top
- # of the help screen.
- case $cmd
- when "s-http", "sparql-http", "soh"
- banner="$cmd [get|post|put|delete] datasetURI graph [file]"
- when "s-get", "s-head", "s-delete"
- banner="$cmd datasetURI graph"
- end
-
- opts.banner = $banner
- # Define the options, and what they do
-
- options[:verbose] = false
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
-
- options[:version] = false
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
-
- # This displays the help screen, all programs are
- # assumed to have this option.
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument => e
- warn e
- exit
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
-
- if command.nil?
- if ARGV.size == 0
- warn "No command given: expected one of 'get', 'put', 'post', 'delete', 'query' or 'update'"
- exit 1
- end
- cmdPrint=ARGV.shift
- command=cmdPrint.upcase
- else
- cmdPrint=command
- end
-
- case command
- when "HEAD", "GET", "DELETE"
- requiredFile=false
- when "PUT", "POST"
- requiredFile=true
- when "QUERY"
- cmd_sparql_query
- when "UPDATE"
- cmd_sparql_update
- else
- warn_exit "Unknown command: #{command}", 2
- end
-
- if requiredFile
- then
- if ARGV.size != 3
- warn_exit "Required: dataset URI, graph URI (or 'default') and file", 1
- end
- else
- if ARGV.size != 2
- warn_exit "Required: dataset URI and graph URI (or 'default')", 1
- end
- end
-
- dataset=parseURI(ARGV.shift)
- # Relative URI?
- graph=parseURI(ARGV.shift)
- file=""
- if requiredFile
- then
- file = ARGV.shift if requiredFile
- if ! File.exist?(file)
- warn_exit "No such file: "+file, 3
- end
- if File.directory?(file)
- warn_exit "File is a directory: "+file, 3
- end
- end
-
- case command
- when "GET"
- GET(dataset, graph)
- when "HEAD"
- HEAD(dataset, graph)
- when "PUT"
- PUT(dataset, graph, file)
- when "DELETE"
- DELETE(dataset, graph)
- when "POST"
- POST(dataset, graph, file)
- else
- warn_exit "Internal error: Unknown command: #{cmd}", 2
- end
- exit 0
-end
-
-## --------
-def string_or_file(arg)
- return arg if ! arg.match(/^@/)
- a=(arg[1..-1])
- open(a, 'rb'){|f| f.read}
-end
-
-## -------- SPARQL Query
-
-## Choose method
-def SPARQL_query(service, query, query_file, forcePOST=false, args2={})
- if ! query_file.nil?
- query = open(query_file, 'rb'){|f| f.read}
- end
- if forcePOST || query.length >= 2*1024
- SPARQL_query_POST(service, query, args2)
- else
- SPARQL_query_GET(service, query, args2)
- end
-end
-
-## By GET
-
-def SPARQL_query_GET(service, query, args2)
- args = { "query" => query }
- args.merge!(args2)
- qs=args.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
- action="#{service}?#{qs}"
- headers={}
- headers.merge!($headers)
- headers[$hAccept]=$accept_results
- get_worker(action, headers)
-end
-
-## By POST
-
-def SPARQL_query_POST(service, query, args2)
- # DRY - body/no body for each of request and response.
- post_params={ "query" => query }
- post_params.merge!(args2)
- uri = URI.parse(service)
- headers={}
- headers.merge!($headers)
- headers[$hAccept]=$accept_results
- execute_post_form_body(uri, headers, post_params)
-end
-
-def execute_post_form_body(uri, headers, post_params)
- request = Net::HTTP::Post.new(uri.request_uri)
- qs=post_params.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
- headers[$hContentType] = $mtWWWForm
- headers[$hContentLength] = qs.length.to_s
- request.initialize_http_header(headers)
- request.body = qs
- print_http_request(uri, request)
- response_print_body(uri, request)
-end
-
-# Usage: -v --help --file= --query=
-def cmd_sparql_query
- options={}
- optparse = OptionParser.new do |opts|
- opts.banner = "Usage: #{$cmd} [--query QUERY] [--service URI] [--post] 'query' | @file"
- opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
- options[:service]=uri
- end
- opts.on('--query=FILE','--file=FILE', 'Take query from a file') do |file|
- options[:file]=file
- end
- opts.on('--output=TYPE', [:json,:xml,:text,:csv,:tsv],
- 'Set the output argument') do |type|
- options[:output]=type
- end
- opts.on('--accept=TYPE', [:json,:xml,:text,:csv,:tsv],
- 'Set the accept header type') do |type|
- options[:accept]=type
- end
- options[:verbose] = false
- opts.on( '--post', 'Force use of POST' ) do
- options[:post] = true
- end
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
- warn e
- exit 1
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
- usePOST = options[:post]
-
- service = options[:service]
- warn_exit 'No service specified. Required --service=URI',1 if service.nil?
-
- # Query
- query=nil
- query_file=options[:file]
- if query_file.nil? && ARGV.size == 0
- then
- warn_exit 'No query specified.',1
- end
- if query_file.nil?
- query = ARGV.shift
- if query.match(/^@/)
- query_file = query[1..-1]
- query = nil
- end
- end
-
- # --output ==> output= (non-standard)
- args={}
- case options[:output]
- when nil
- when "json","xml","text","csv","tsv"
- args['output'] = options[:output]
- when :json,:xml,:text,:csv,:tsv
- args['output'] = options[:output].to_s
- else
- warn_exit "Unrecognized output type: "+options[:output],2
- end
-
- # --accept
- # options[:accept]
-
- print "SPARQL #{service}\n" if $verbose
- #args={"output"=>"text"}
- SPARQL_query(service, query, query_file, usePOST, args)
- exit(0)
-end
-
-## -------- SPARQL Update
-
-# Update sent as a WWW form.
-def SPARQL_update_by_form(service, update, args2={})
- args = {}
- args.merge!(args2)
- headers={}
- headers.merge!($headers)
- # args? encode?
- body="update="+uri_escape(update)
- headers[$hContentType] = $mtWWWForm
- headers[$hContentLength] = body.length.to_s
- uri = URI.parse(service)
- execute_post_form(uri, headers, body)
-end
-
-# DRY - query form.
-def execute_post_form(uri, headers, body)
- request = Net::HTTP::Post.new(uri.request_uri)
- request.initialize_http_header(headers)
- request.body = body
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def SPARQL_update(service, update, args2={})
- args = {}
- args.merge!(args2)
- headers={}
- headers.merge!($headers)
- headers[$hContentType] = $mtSparqlUpdate
- uri = URI.parse(service)
- request = Net::HTTP::Post.new(uri.request_uri)
- request.initialize_http_header(headers)
- request.body = update
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def cmd_sparql_update(by_raw_post=true)
- # Share with cmd_sparql_query
- options={}
- optparse = OptionParser.new do |opts|
- opts.banner = "Usage: #{$cmd} [--file REQUEST] [--service URI] 'request' | @file"
- opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
- options[:service]=uri
- end
- opts.on('--update=FILE', '--file=FILE', 'Take update from a file') do |file|
- options[:file]=file
- end
- options[:verbose] = false
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument => e
- warn e
- exit
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
-
- service = options[:service]
- warn_exit 'No service specified. Required --service=URI',1 if service.nil?
-
- update=nil
- update_file=options[:file]
-
- if update_file.nil? && ARGV.size == 0
- then
- warn_exit 'No update specified.',1
- end
- if update_file.nil?
- update = ARGV.shift
- if update.match(/^@/)
- update_file = update[1..-1]
- update = nil
- end
- end
-
- print "SPARQL-Update #{service}\n" if $verbose
- args={}
-
- # Reads in the file :-(
- if update.nil?
- then
- update = open(update_file, 'rb'){|f| f.read}
- else
- update = string_or_file(update)
- end
-
- if by_raw_post
- SPARQL_update(service, update, args)
- else
- SPARQL_update_by_form(service, update, args)
- end
- exit(0)
-end
-
-## -------
-
-case $cmd
-when "s-http", "sparql-http", "soh"
- $banner="#{$cmd} [get|post|put|delete] datasetURI graph [file]"
- cmd_soh
-when "s-get", "s-head", "s-put", "s-delete", "s-post"
-
- case $cmd
- when "s-get", "s-head", "s-delete"
- $banner="#{$cmd} datasetURI graph"
- when "s-put", "s-post"
- $banner="#{$cmd} datasetURI graph file"
- end
- cmd2 = $cmd.sub(/^s-/, '').upcase
- cmd_soh cmd2
-
-when "s-query", "sparql-query"
- cmd_sparql_query
-when "s-update", "sparql-update"
- cmd_sparql_update true
-when "s-update-form", "sparql-update-form"
- cmd_sparql_update false
-else
- warn_exit "Unknown: "+$cmd, 1
-end
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/soh
----------------------------------------------------------------------
diff --git a/jena-fuseki/soh b/jena-fuseki/soh
deleted file mode 100755
index 4f6590d..0000000
--- a/jena-fuseki/soh
+++ /dev/null
@@ -1,713 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-# 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.
-
-# SPARQL HTTP Update, client.
-
-require 'optparse'
-require 'net/http'
-require 'uri'
-require 'cgi'
-require 'pp'
-require 'ostruct'
-
-# ToDo
-# Allow a choice of media type for GET
-# --accept "content-type" (and abbreviations)
-# --header "Add:this"
-# --user, --password
-# Basic authentication: request.basic_auth("username", "password")
-# Follow redirects => 301: puts response["location"] # All headers are lowercase?
-
-SOH_NAME="SOH"
-SOH_VERSION="0.0.0"
-
-$proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
-
-# What about direct naming?
-
-# Names
-$mtTurtle = 'text/turtle;charset=utf-8'
-$mtRDF = 'application/rdf+xml'
-$mtText = 'text/plain'
-$mtNTriples = 'application/n-triples'
-$mtNQuads = 'application/n-quads'
-$mtJSONLD = 'application/ld+json'
-$mtTriG = 'application/trig'
-$mtSparqlResultsX = 'application/sparql-results+xml'
-$mtSparqlResultsJ = 'application/sparql-results+json'
-$mtAppJSON = 'application/json'
-$mtAppXML = 'application/xml'
-$mtSparqlResultsTSV = 'application/sparql-results+tsv'
-$mtSparqlResultsCSV = 'application/sparql-results+csv'
-$mtSparqlUpdate = 'application/sparql-update'
-$mtWWWForm = 'application/x-www-form-urlencoded'
-$mtSparqlQuery = "application/sparql-query" ;
-
-# Global media type table.
-$fileMediaTypes = {}
-$fileMediaTypes['ttl'] = $mtTurtle
-$fileMediaTypes['n3'] = 'text/n3; charset=utf-8'
-$fileMediaTypes['nt'] = $mtText
-$fileMediaTypes['rdf'] = $mtRDF
-$fileMediaTypes['owl'] = $mtRDF
-$fileMediaTypes['nq'] = $mtNQuads
-$fileMediaTypes['trig'] = $mtTriG
-$fileMediaTypes['json-ld'] = $mtJSONLD
-$fileMediaTypes['jsonld'] = $mtJSONLD
-
-# Global charset : no entry means "don't set"
-$charsetUTF8 = 'utf-8'
-$charset = {}
-$charset[$mtTurtle] = 'utf-8'
-$charset[$mtText] = 'ascii'
-$charset[$mtTriG] = 'utf-8'
-$charset[$mtNQuads] = 'utf-8'
-
-# Headers
-
-$hContentType = 'Content-Type'
-# $hContentEncoding = 'Content-Encoding'
-$hContentLength = 'Content-Length'
-# $hContentLocation = 'Content-Location'
-# $hContentRange = 'Content-Range'
-
-$hAccept = 'Accept'
-$hAcceptCharset = 'Accept-Charset'
-$hAcceptEncoding = 'Accept-Encoding'
-$hAcceptRanges = 'Accept-Ranges'
-
-$headers = { "User-Agent" => "#{SOH_NAME}/Fuseki #{SOH_VERSION}"}
-$print_http = false
-
-# Default for GET
-# At least allow anything (and hope!)
-$accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , #{$mtJSONLD};q=0.5"
-# Datasets
-$accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
-# For SPARQL query
-$accept_results="#{$mtSparqlResultsJ} , #{$mtSparqlResultsX};q=0.9 , #{$accept_rdf}"
-
-# Accept any in case of trouble.
-$accept_rdf="#{$accept_rdf} , */*;q=0.1"
-$accept_results="#{$accept_results} , */*;q=0.1"
-
-# The media type usually forces the charset.
-$accept_charset=nil
-
-## Who we are.
-## Two styles:
-## s-query .....
-## soh query .....
-
-$cmd = File.basename($0)
-if $cmd == 'soh'
-then
- $cmd = (ARGV.size == 0) ? 'soh' : ARGV.shift
-end
-
-if ! $cmd.start_with?('s-') && $cmd != 'soh'
- $cmd = 's-'+$cmd
-end
-
-## --------
-
-def GET(dataset, graph)
- print "GET #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- headers = {}
- headers.merge!($headers)
- headers[$hAccept] = $accept_rdf
- headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
- get_worker(requestURI, headers)
-end
-
-def get_worker(requestURI, headers)
- uri = URI.parse(requestURI)
- request = Net::HTTP::Get.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_print_body(uri, request)
-end
-
-def HEAD(dataset, graph)
- print "HEAD #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- headers = {}
- headers.merge!($headers)
- headers[$hAccept] = $accept_rdf
- headers[$hAcceptCharset] = $accept_charset unless $accept_charset.nil?
- uri = URI.parse(requestURI)
- request = Net::HTTP::Head.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def PUT(dataset, graph, file)
- print "PUT #{dataset} #{graph} #{file}\n" if $verbose
- send_body(dataset, graph, file, Net::HTTP::Put)
-end
-
-def POST(dataset, graph, file)
- print "POST #{dataset} #{graph} #{file}\n" if $verbose
- send_body(dataset, graph, file, Net::HTTP::Post)
-end
-
-def DELETE(dataset, graph)
- print "DELETE #{dataset} #{graph}\n" if $verbose
- requestURI = target(dataset, graph)
- uri = URI.parse(requestURI)
- request = Net::HTTP::Delete.new(uri.request_uri)
- headers = {}
- headers.merge!($headers)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def uri_escape(string)
- CGI.escape(string)
-end
-
-def target(dataset, graph)
- return dataset+"?default" if graph == "default"
- return dataset+"?graph="+uri_escape(graph)
-end
-
-def send_body(dataset, graph, file, method)
- mt = content_type(file)
- headers = {}
- headers.merge!($headers)
- headers[$hContentType] = mt
- headers[$hContentLength] = File.size(file).to_s
- ## p headers
-
- requestURI = target(dataset, graph)
- uri = URI.parse(requestURI)
-
- request = method.new(uri.request_uri)
- request.initialize_http_header(headers)
- print_http_request(uri, request)
- request.body_stream = File.open(file)
- response_no_body(uri, request)
-end
-
-def response_no_body(uri, request)
- http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
- http.read_timeout = nil
- # check we can connect.
- begin http.start
- rescue Exception => e
- # puts e.message
- #puts e.backtrace.inspect
- warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
- end
- response = http.request(request)
- print_http_response(response)
- case response
- when Net::HTTPSuccess, Net::HTTPRedirection
- # OK
- when Net::HTTPNotFound
- warn_exit "404 Not found: #{uri}", 9
- #print response.body
- else
- warn_exit "#{response.code} #{response.message} #{uri}", 9
- # Unreachable
- response.error!
- end
- # NO BODY IN RESPONSE
-end
-
-def response_print_body(uri, request)
- http = Net::HTTP::Proxy($proxy.host,$proxy.port).new(uri.host, uri.port)
- http.read_timeout = nil
- # check we can connect.
- begin http.start
- rescue => e
- #puts e.backtrace.inspect
- #print e.class
- warn_exit "Failed to connect: #{uri.host}:#{uri.port}: #{e.message}", 3
- end
-
- # Add a blank line if headers were output.
- print "\n" if $http_print ;
-
- begin
- response = http.request(request) { |res|
- print_http_response(res)
- #puts res.code
- res.read_body do |segment|
- print segment
- end
- }
- case response
- when Net::HTTPSuccess, Net::HTTPRedirection
- # OK
- when Net::HTTPNotFound
- warn_exit "404 Not found: #{uri}", 9
- #print response.body
- else
- warn_exit "#{response.code}: #{uri}", 9
- # Unreachable
- response.error!
- end
- rescue EOFError => e
- warn_exit "IO Error: "+e.message, 3
- end
-end
-
-def print_http_request(uri, request)
- return unless $print_http
- #print "Request\n"
- print request.method," ",uri, "\n"
- print_headers(" ",request)
-end
-
-def print_http_response(response)
- return unless $print_http
- #print "Response\n"
- print response.code, " ", response.message, "\n"
- print_headers(" ",response)
-end
-
-def print_headers(marker, headers)
- headers.each do |k,v|
- k = k.split('-').map{|w| w.capitalize}.join('-')+':'
- printf "%s%-20s %s\n",marker,k,v
- end
-end
-
-def content_type(file)
- file =~ /\.([^.]*)$/
- ext = $1
- mt = $fileMediaTypes[ext]
- cs = $charset[mt]
- mt = mt+';charset='+cs if ! cs.nil?
- return mt
-end
-
-def charset(content_type)
- return $charset[content_type]
-end
-
-def warn_exit(msg, rc)
- warn msg
- exit rc ;
-end
-
-def parseURI(uri_string)
- begin
- return URI.parse(uri_string).to_s
- rescue URI::InvalidURIError => err
- warn_exit "Bad URI: <#{uri_string}>", 2
- end
-end
-
-## ---- Command
-
-def cmd_soh(command=nil)
- ## Command line
- options = {}
- optparse = OptionParser.new do |opts|
- # Set a banner, displayed at the top
- # of the help screen.
- case $cmd
- when "s-http", "sparql-http", "soh"
- banner="$cmd [get|post|put|delete] datasetURI graph [file]"
- when "s-get", "s-head", "s-delete"
- banner="$cmd datasetURI graph"
- end
-
- opts.banner = $banner
- # Define the options, and what they do
-
- options[:verbose] = false
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
-
- options[:version] = false
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
-
- # This displays the help screen, all programs are
- # assumed to have this option.
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument => e
- warn e
- exit
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
-
- if command.nil?
- if ARGV.size == 0
- warn "No command given: expected one of 'get', 'put', 'post', 'delete', 'query' or 'update'"
- exit 1
- end
- cmdPrint=ARGV.shift
- command=cmdPrint.upcase
- else
- cmdPrint=command
- end
-
- case command
- when "HEAD", "GET", "DELETE"
- requiredFile=false
- when "PUT", "POST"
- requiredFile=true
- when "QUERY"
- cmd_sparql_query
- when "UPDATE"
- cmd_sparql_update
- else
- warn_exit "Unknown command: #{command}", 2
- end
-
- if requiredFile
- then
- if ARGV.size != 3
- warn_exit "Required: dataset URI, graph URI (or 'default') and file", 1
- end
- else
- if ARGV.size != 2
- warn_exit "Required: dataset URI and graph URI (or 'default')", 1
- end
- end
-
- dataset=parseURI(ARGV.shift)
- # Relative URI?
- graph=parseURI(ARGV.shift)
- file=""
- if requiredFile
- then
- file = ARGV.shift if requiredFile
- if ! File.exist?(file)
- warn_exit "No such file: "+file, 3
- end
- if File.directory?(file)
- warn_exit "File is a directory: "+file, 3
- end
- end
-
- case command
- when "GET"
- GET(dataset, graph)
- when "HEAD"
- HEAD(dataset, graph)
- when "PUT"
- PUT(dataset, graph, file)
- when "DELETE"
- DELETE(dataset, graph)
- when "POST"
- POST(dataset, graph, file)
- else
- warn_exit "Internal error: Unknown command: #{cmd}", 2
- end
- exit 0
-end
-
-## --------
-def string_or_file(arg)
- return arg if ! arg.match(/^@/)
- a=(arg[1..-1])
- open(a, 'rb'){|f| f.read}
-end
-
-## -------- SPARQL Query
-
-## Choose method
-def SPARQL_query(service, query, query_file, forcePOST=false, args2={})
- if ! query_file.nil?
- query = open(query_file, 'rb'){|f| f.read}
- end
- if forcePOST || query.length >= 2*1024
- SPARQL_query_POST(service, query, args2)
- else
- SPARQL_query_GET(service, query, args2)
- end
-end
-
-## By GET
-
-def SPARQL_query_GET(service, query, args2)
- args = { "query" => query }
- args.merge!(args2)
- qs=args.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
- action="#{service}?#{qs}"
- headers={}
- headers.merge!($headers)
- headers[$hAccept]=$accept_results
- get_worker(action, headers)
-end
-
-## By POST
-
-def SPARQL_query_POST(service, query, args2)
- # DRY - body/no body for each of request and response.
- post_params={ "query" => query }
- post_params.merge!(args2)
- uri = URI.parse(service)
- headers={}
- headers.merge!($headers)
- headers[$hAccept]=$accept_results
- execute_post_form_body(uri, headers, post_params)
-end
-
-def execute_post_form_body(uri, headers, post_params)
- request = Net::HTTP::Post.new(uri.request_uri)
- qs=post_params.collect { |k,v| "#{k}=#{uri_escape(v)}" }.join('&')
- headers[$hContentType] = $mtWWWForm
- headers[$hContentLength] = qs.length.to_s
- request.initialize_http_header(headers)
- request.body = qs
- print_http_request(uri, request)
- response_print_body(uri, request)
-end
-
-# Usage: -v --help --file= --query=
-def cmd_sparql_query
- options={}
- optparse = OptionParser.new do |opts|
- opts.banner = "Usage: #{$cmd} [--query QUERY] [--service URI] [--post] 'query' | @file"
- opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
- options[:service]=uri
- end
- opts.on('--query=FILE','--file=FILE', 'Take query from a file') do |file|
- options[:file]=file
- end
- opts.on('--output=TYPE', [:json,:xml,:text,:csv,:tsv],
- 'Set the output argument') do |type|
- options[:output]=type
- end
- opts.on('--accept=TYPE', [:json,:xml,:text,:csv,:tsv],
- 'Set the accept header type') do |type|
- options[:accept]=type
- end
- options[:verbose] = false
- opts.on( '--post', 'Force use of POST' ) do
- options[:post] = true
- end
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
- warn e
- exit 1
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
- usePOST = options[:post]
-
- service = options[:service]
- warn_exit 'No service specified. Required --service=URI',1 if service.nil?
-
- # Query
- query=nil
- query_file=options[:file]
- if query_file.nil? && ARGV.size == 0
- then
- warn_exit 'No query specified.',1
- end
- if query_file.nil?
- query = ARGV.shift
- if query.match(/^@/)
- query_file = query[1..-1]
- query = nil
- end
- end
-
- # --output ==> output= (non-standard)
- args={}
- case options[:output]
- when nil
- when "json","xml","text","csv","tsv"
- args['output'] = options[:output]
- when :json,:xml,:text,:csv,:tsv
- args['output'] = options[:output].to_s
- else
- warn_exit "Unrecognized output type: "+options[:output],2
- end
-
- # --accept
- # options[:accept]
-
- print "SPARQL #{service}\n" if $verbose
- #args={"output"=>"text"}
- SPARQL_query(service, query, query_file, usePOST, args)
- exit(0)
-end
-
-## -------- SPARQL Update
-
-# Update sent as a WWW form.
-def SPARQL_update_by_form(service, update, args2={})
- args = {}
- args.merge!(args2)
- headers={}
- headers.merge!($headers)
- # args? encode?
- body="update="+uri_escape(update)
- headers[$hContentType] = $mtWWWForm
- headers[$hContentLength] = body.length.to_s
- uri = URI.parse(service)
- execute_post_form(uri, headers, body)
-end
-
-# DRY - query form.
-def execute_post_form(uri, headers, body)
- request = Net::HTTP::Post.new(uri.request_uri)
- request.initialize_http_header(headers)
- request.body = body
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def SPARQL_update(service, update, args2={})
- args = {}
- args.merge!(args2)
- headers={}
- headers.merge!($headers)
- headers[$hContentType] = $mtSparqlUpdate
- uri = URI.parse(service)
- request = Net::HTTP::Post.new(uri.request_uri)
- request.initialize_http_header(headers)
- request.body = update
- print_http_request(uri, request)
- response_no_body(uri, request)
-end
-
-def cmd_sparql_update(by_raw_post=true)
- # Share with cmd_sparql_query
- options={}
- optparse = OptionParser.new do |opts|
- opts.banner = "Usage: #{$cmd} [--file REQUEST] [--service URI] 'request' | @file"
- opts.on('--service=URI', '--server=URI', 'SPARQL endpoint') do |uri|
- options[:service]=uri
- end
- opts.on('--update=FILE', '--file=FILE', 'Take update from a file') do |file|
- options[:file]=file
- end
- options[:verbose] = false
- opts.on( '-v', '--verbose', 'Verbose' ) do
- options[:verbose] = true
- end
- opts.on( '--version', 'Print version and exit' ) do
- print "#{SOH_NAME} #{SOH_VERSION}\n"
- exit
- end
- opts.on( '-h', '--help', 'Display this screen and exit' ) do
- puts opts
- exit
- end
- end
-
- begin optparse.parse!
- rescue OptionParser::InvalidArgument => e
- warn e
- exit
- end
-
- $verbose = options[:verbose]
- $print_http = $verbose
-
- service = options[:service]
- warn_exit 'No service specified. Required --service=URI',1 if service.nil?
-
- update=nil
- update_file=options[:file]
-
- if update_file.nil? && ARGV.size == 0
- then
- warn_exit 'No update specified.',1
- end
- if update_file.nil?
- update = ARGV.shift
- if update.match(/^@/)
- update_file = update[1..-1]
- update = nil
- end
- end
-
- print "SPARQL-Update #{service}\n" if $verbose
- args={}
-
- # Reads in the file :-(
- if update.nil?
- then
- update = open(update_file, 'rb'){|f| f.read}
- else
- update = string_or_file(update)
- end
-
- if by_raw_post
- SPARQL_update(service, update, args)
- else
- SPARQL_update_by_form(service, update, args)
- end
- exit(0)
-end
-
-## -------
-
-case $cmd
-when "s-http", "sparql-http", "soh"
- $banner="#{$cmd} [get|post|put|delete] datasetURI graph [file]"
- cmd_soh
-when "s-get", "s-head", "s-put", "s-delete", "s-post"
-
- case $cmd
- when "s-get", "s-head", "s-delete"
- $banner="#{$cmd} datasetURI graph"
- when "s-put", "s-post"
- $banner="#{$cmd} datasetURI graph file"
- end
- cmd2 = $cmd.sub(/^s-/, '').upcase
- cmd_soh cmd2
-
-when "s-query", "sparql-query"
- cmd_sparql_query
-when "s-update", "sparql-update"
- cmd_sparql_update true
-when "s-update-form", "sparql-update-form"
- cmd_sparql_update false
-else
- warn_exit "Unknown: "+$cmd, 1
-end
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src-dev/dev/RunFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src-dev/dev/RunFuseki.java b/jena-fuseki/src-dev/dev/RunFuseki.java
deleted file mode 100644
index 74f678c..0000000
--- a/jena-fuseki/src-dev/dev/RunFuseki.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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 dev;
-
-import org.apache.jena.fuseki.FusekiCmd ;
-
-public class RunFuseki
-{
- public static void main(String[] args)
- {
- //demo() ;
- //FusekiCmd.main("--config=config.ttl") ; System.exit(0) ;
- main1() ;
- }
-
- public static void demo()
- {
- String DIR="DemoServer" ;
- FusekiCmd.main("--config="+name(DIR,"config.ttl"), "--pages="+name(DIR, "demo-pages")) ;
- System.exit(0) ;
- }
-
- public static String name(String DIR, String filename)
- {
- StringBuilder sb = new StringBuilder() ;
- if ( ! filename.startsWith("/") )
- {
- sb.append(DIR) ;
- if ( ! DIR.endsWith("/") )
- sb.append("/") ;
- }
- sb.append(filename) ;
- return sb.toString() ;
- }
-
- private static void main1()
- {
- String tmpdir = System.getenv("TMPDIR") ;
- if ( tmpdir == null )
- tmpdir = System.getenv("TMP") ;
- if ( tmpdir == null )
- tmpdir = System.getenv("HOME")+"/tmp" ;
- if ( ! tmpdir.endsWith("/") )
- tmpdir = tmpdir+"/" ;
-
- FusekiCmd.main(
- // "-v",
- "--mem", "--update", "/ds"
- //"--update", "--loc="+tmpdir+"DB", "--set=tdb:unionDefaultGraph=true", "/ds"
- //"--update", "--mem", "/ds"
-
- //"--update", "--memtdb", "--set=tdb:unionDefaultGraph=true", "/ds"
-
- //"--debug",
- //"--update",
- //"--timeout=1000,5000",
- //"--set=arq:queryTimeout=1000",
- //"--port=3030",
- //"--mgtPort=3031",
- //"--mem",
- //"--home=/home/afs/Projects/Fuseki",
- //"--loc=DB",
- //"--file=D.nt",
- //"--gzip=no",
- //"--desc=desc.ttl",
- //--pages=
- //"--jetty-config=jetty-fuseki.xml",
- //"--config=config-tdb.ttl"
- // "/ds"
- ) ;
- System.exit(0) ;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/DEF.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/DEF.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/DEF.java
deleted file mode 100644
index c24f7e3..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/DEF.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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;
-
-import static org.apache.jena.riot.WebContent.* ;
-import org.apache.jena.atlas.web.AcceptList ;
-import org.apache.jena.atlas.web.MediaType ;
-
-public class DEF
-{
- public static final MediaType acceptRDFXML = MediaType.create(contentTypeRDFXML) ;
- public static final MediaType acceptNQuads = MediaType.create(contentTypeNQuads) ;
- public static final MediaType acceptRSXML = MediaType.create(contentTypeResultsXML) ;
-
- public static final AcceptList rdfOffer = AcceptList.create(contentTypeTurtle,
- contentTypeTurtleAlt1,
- contentTypeTurtleAlt2,
- contentTypeNTriples,
- contentTypeNTriplesAlt,
- contentTypeRDFXML,
- contentTypeJSONLD,
- contentTypeRDFJSON,
- contentTypeRDFThrift
- ) ;
-
- public static final AcceptList quadsOffer = AcceptList.create(contentTypeTriG,
- contentTypeTriGAlt1,
- contentTypeTriGAlt2,
- contentTypeJSONLD,
- contentTypeNQuads,
- contentTypeNQuadsAlt1,
- contentTypeNQuadsAlt2
- ) ;
-
- public static final AcceptList rsOfferTable = AcceptList.create(contentTypeResultsJSON,
- contentTypeTextCSV,
- contentTypeTextTSV,
- contentTypeResultsXML,
- contentTypeResultsThrift,
- contentTypeTextPlain
- ) ;
-
- public static final AcceptList rsOfferBoolean = AcceptList.create(contentTypeResultsJSON,
- contentTypeTextCSV,
- contentTypeTextTSV,
- contentTypeResultsXML,
- contentTypeTextPlain
- ) ;
-
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/EmbeddedFusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/EmbeddedFusekiServer.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/EmbeddedFusekiServer.java
deleted file mode 100644
index 0261b67..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/EmbeddedFusekiServer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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;
-
-import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.fuseki.server.FusekiConfig ;
-import org.apache.jena.fuseki.server.SPARQLServer ;
-import org.apache.jena.fuseki.server.ServerConfig ;
-
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
-import com.hp.hpl.jena.tdb.TDBFactory ;
-
-/** Embedded (same JVM) server.
- * <p>Example for one server per test suite:
- * <pre>
- private static EmbeddedFusekiServer server = null ;
- \@BeforeClass public static void beforeClass() {
- server = EmbeddedFusekiServer.createMemByPath(3030, "/test") ;
- server.start() ;
- \@AfterClass public static void afterClass() {
- server.stop() ;
- }
- </pre>
- */
-public class EmbeddedFusekiServer
-{
-
- public static EmbeddedFusekiServer mem(int port, String datasetPath) {
- DatasetGraph dsg = DatasetGraphFactory.createMem() ;
- return EmbeddedFusekiServer.create(port, dsg, datasetPath) ;
- }
-
- public static EmbeddedFusekiServer memTDB(int port, String datasetPath) {
- DatasetGraph dsg = TDBFactory.createDatasetGraph() ;
- return EmbeddedFusekiServer.create(port, dsg, datasetPath) ;
- }
-
- public static EmbeddedFusekiServer create(int port, DatasetGraph dsg, String datasetPath) {
- ServerConfig conf = FusekiConfig.defaultConfiguration(datasetPath, dsg, true, true) ;
- conf.port = port ;
- conf.pagesPort = port ;
- if ( ! FileOps.exists(conf.pages) )
- conf.pages = null ;
- return new EmbeddedFusekiServer(conf) ;
- }
-
- public static EmbeddedFusekiServer configure(int port, String fileConfig) {
- ServerConfig conf = FusekiConfig.configure(fileConfig) ;
- conf.port = port ;
- conf.pagesPort = port ;
- if ( ! FileOps.exists(conf.pages) )
- conf.pages = null ;
- return new EmbeddedFusekiServer(conf) ;
- }
-
- private SPARQLServer server = null ;
-
- public EmbeddedFusekiServer(ServerConfig conf) {
- server = new SPARQLServer(conf) ;
- }
-
- public void start() {
- server.start() ;
- }
-
- public void stop() {
- server.stop() ;
- }
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/Fuseki.java
deleted file mode 100644
index c62ba1f..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/Fuseki.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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;
-
-import org.apache.jena.fuseki.server.SPARQLServer ;
-import org.apache.jena.riot.RIOT ;
-import org.apache.jena.riot.system.stream.LocatorFTP ;
-import org.apache.jena.riot.system.stream.LocatorHTTP ;
-import org.apache.jena.riot.system.stream.StreamManager ;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
-
-import com.hp.hpl.jena.query.ARQ ;
-import com.hp.hpl.jena.sparql.SystemARQ ;
-import com.hp.hpl.jena.sparql.lib.Metadata ;
-import com.hp.hpl.jena.sparql.mgt.SystemInfo ;
-import com.hp.hpl.jena.sparql.util.Context ;
-import com.hp.hpl.jena.sparql.util.MappingRegistry ;
-import com.hp.hpl.jena.tdb.TDB ;
-import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
-
-/**
- * <p>The main class enabling us to:</p>
- * <ol>
- * <li>create instances of a Fuseki server e.g.
- * the ARQ, RIOT and TDB server stack</li>
- * <li>get server global {@link com.hp.hpl.jena.sparql.util.Context} e.g.
- * named values used to pass implementation-specific parameters across
- * general interfaces.</li>
- * <li>get the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.</li>
- * <li>set the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.</li>
- *
- */
-public class Fuseki
-{
- /** Path to ???*/
- static public String PATH = "org.apache.jena.fuseki" ;
-
- /** a unique IRI for the Fuseki namespace*/
- static public String FusekiIRI = "http://jena.apache.org/Fuseki" ;
-
- /** Fuseki home environment, usually set to $FUSEKI_HOME */
- static public String FusekiHomeEnv = "FUSEKI_HOME" ;
-
- /** a unique IRI including the symbol notation for which properties should be appended */
- static public String FusekiSymbolIRI = "http://jena.apache.org/fuseki#" ;
-
- /** ??? */
- static public String PagesStatic = "pages" ;
-
- /**
- * TEMPORARY - this enables POST of triples to the dataset URI causing a graph to be created.
- * POSTing to /dataset?graph=uri is preferred
- */
- static public boolean graphStoreProtocolPostCreate = false ;
-
- /** an relative path to the location of <code>fuseki-properties.xml</code> file */
- static private String metadataLocation = "org/apache/jena/fuseki/fuseki-properties.xml" ;
-
- /** Object which holds metadata specified within {@link Fuseki#metadataLocation} */
- static private Metadata metadata = initMetadata() ;
-
- private static Metadata initMetadata()
- {
- Metadata m = new Metadata() ;
- //m.addMetadata(metadataDevLocation) ;
- m.addMetadata(metadataLocation) ;
- return m ;
- }
-
- /** The name of the Fuseki server. Set to the string <code>Fuseki</code> by default.*/
- static public final String NAME = "Fuseki" ;
-
- /** Version of this Fuseki instance */
- static public final String VERSION = metadata.get(PATH+".version", "development");
-
- /** Date when Fuseki was built */
- static public final String BUILD_DATE = metadata.get(PATH+".build.datetime", "unknown") ; // call Date if unavailable.
-
- /** An identifier for the HTTP Fuseki server instance*/
- static public final String serverHttpName = NAME+" ("+VERSION+")" ;
-
- /** Actual log file for operations */
- public static final String requestLogName = PATH+".Fuseki" ;
-
- /** Instance of log for operations */
- public static final Logger requestLog = LoggerFactory.getLogger(requestLogName) ;
-
- /** Actual log file for general server messages.*/
- public static final String serverLogName = PATH+".Server" ;
-
- /** Instance of log for general server messages */
- public static final Logger serverLog = LoggerFactory.getLogger(serverLogName) ;
-
- /** Actual log file for config server messages. */
- public static final String configLogName = PATH+".Config" ;
-
- /** Instance of log for config server message s*/
- public static final Logger configLog = LoggerFactory.getLogger(configLogName) ;
-
- /** Instance of log for config server message s*/
- public static boolean verboseLogging = false ;
-
- /** An instance of management for stream opening, including redirecting through a
- * location mapper whereby a name (e.g. URL) is redirected to another name (e.g. local file).
- * */
- public static final StreamManager webStreamManager ;
- static {
- webStreamManager = new StreamManager() ;
- // Only know how to handle http and ftp URLs - nothing local.
- webStreamManager.addLocator(new LocatorHTTP()) ;
- webStreamManager.addLocator(new LocatorFTP()) ;
- }
-
- private static boolean initialized = false ;
-
- /**
- * Initialize an instance of the Fuseki server stack.
- */
- public synchronized static void init()
- {
- if ( initialized )
- return ;
- initialized = true ;
- ARQ.init() ;
- SystemInfo sysInfo = new SystemInfo(FusekiIRI, PATH, VERSION, BUILD_DATE) ;
- SystemARQ.registerSubSystem(sysInfo) ;
- RIOT.init() ;
- TDB.init() ;
- MappingRegistry.addPrefixMapping("fuseki", FusekiSymbolIRI) ;
-
- TDB.setOptimizerWarningFlag(false) ;
- // Don't set TDB batch commits.
- // This can be slower, but it less memory hungry and more predictable.
- TransactionManager.QueueBatchSize = 0 ;
- }
-
- /**
- * Get server global {@link com.hp.hpl.jena.sparql.util.Context}.
- * @return {@link com.hp.hpl.jena.query.ARQ#getContext()}
- */
- public static Context getContext()
- {
- return ARQ.getContext() ;
- }
-
- // Temporary ...
- private static SPARQLServer server ;
-
- /** set/specify the {@link org.apache.jena.fuseki.server.SPARQLServer} instance.*/
- public static void setServer(SPARQLServer _server) { server = _server ; }
-
- /** get the {@link org.apache.jena.fuseki.server.SPARQLServer} instance. */
- public static SPARQLServer getServer() { return server ; }
-
- // Force a call to init.
- static { init() ; }
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiCmd.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
deleted file mode 100644
index 77bafe8..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * 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;
-
-import static org.apache.jena.fuseki.Fuseki.serverLog ;
-
-import java.io.File ;
-import java.io.InputStream ;
-import java.util.List ;
-
-import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
-import org.apache.jena.atlas.lib.StrUtils ;
-import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.fuseki.mgt.ManagementServer ;
-import org.apache.jena.fuseki.server.FusekiConfig ;
-import org.apache.jena.fuseki.server.SPARQLServer ;
-import org.apache.jena.fuseki.server.ServerConfig ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.SysRIOT ;
-import org.eclipse.jetty.server.Server ;
-import org.slf4j.Logger ;
-import arq.cmd.CmdException ;
-import arq.cmdline.ArgDecl ;
-import arq.cmdline.CmdARQ ;
-import arq.cmdline.ModDatasetAssembler ;
-
-import com.hp.hpl.jena.query.ARQ ;
-import com.hp.hpl.jena.query.Dataset ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
-import com.hp.hpl.jena.tdb.TDB ;
-import com.hp.hpl.jena.tdb.TDBFactory ;
-import com.hp.hpl.jena.tdb.sys.Names ;
-import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
-
-public class FusekiCmd extends CmdARQ
-{
- private static String log4Jsetup = StrUtils.strjoinNL(
- "## Plain output to stdout"
- , "log4j.appender.jena.plain=org.apache.log4j.ConsoleAppender"
- , "log4j.appender.jena.plain.target=System.out"
- , "log4j.appender.jena.plain.layout=org.apache.log4j.PatternLayout"
- , "log4j.appender.jena.plain.layout.ConversionPattern=%d{HH:mm:ss} %-5p %m%n"
-
- , "## Plain output with level, to stderr"
- , "log4j.appender.jena.plainlevel=org.apache.log4j.ConsoleAppender"
- , "log4j.appender.jena.plainlevel.target=System.err"
- , "log4j.appender.jena.plainlevel.layout=org.apache.log4j.PatternLayout"
- , "log4j.appender.jena.plainlevel.layout.ConversionPattern=%d{HH:mm:ss} %-5p %m%n"
-
- , "## Everything"
- , "log4j.rootLogger=INFO, jena.plain"
- , "log4j.logger.com.hp.hpl.jena=WARN"
- , "log4j.logger.org.openjena=WARN"
- , "log4j.logger.org.apache.jena=WARN"
-
- , "# Server log."
- , "log4j.logger.org.apache.jena.fuseki.Server=INFO"
- , "# Request log."
- , "log4j.logger.org.apache.jena.fuseki.Fuseki=INFO"
- , "log4j.logger.org.apache.jena.tdb.loader=INFO"
- , "log4j.logger.org.eclipse.jetty=ERROR"
-
- , "## Parser output"
- , "log4j.additivity."+SysRIOT.riotLoggerName+"=false"
- , "log4j.logger."+SysRIOT.riotLoggerName+"=INFO, jena.plainlevel "
- ) ;
-
-
- // Set logging.
- // 1/ Use log4j.configuration is defined.
- // 2/ Use file:log4j.properties
- // 3/ Use Built in.
-
- static void setLogging() {
- // No loggers have been created but configuration may have been set up.
- String x = System.getProperty("log4j.configuration", null) ;
-
- if ( x != null && ! x.equals("set") ) {
- // "set" indicates that CmdMain set logging.
- // Use standard log4j initialization.
- return ;
- }
-
- String fn = "log4j.properties" ;
- File f = new File(fn) ;
- if ( f.exists() ) {
- // Use file log4j.properties
- System.setProperty("log4j.configuration", "file:"+fn) ;
- return ;
- }
- // Use built-in for Fuseki.
- LogCtl.resetLogging(log4Jsetup) ;
- }
-
- static { setLogging() ; }
-
- // Arguments:
- // --update
-
- // Specific switches:
-
- // --admin=on/off
-
- // --http-update
- // --http-get
-
- // --sparql-query
- // --sparql-update
-
- // pages/validators/
- // pages/control/
- // pages/query/ or /pages/sparql/
-
- private static ArgDecl argMgtPort = new ArgDecl(ArgDecl.HasValue, "mgtPort", "mgtport") ;
- private static ArgDecl argMem = new ArgDecl(ArgDecl.NoValue, "mem") ;
- private static ArgDecl argAllowUpdate = new ArgDecl(ArgDecl.NoValue, "update", "allowUpdate") ;
- private static ArgDecl argFile = new ArgDecl(ArgDecl.HasValue, "file") ;
- private static ArgDecl argMemTDB = new ArgDecl(ArgDecl.NoValue, "memtdb", "memTDB") ;
- private static ArgDecl argTDB = new ArgDecl(ArgDecl.HasValue, "loc", "location") ;
- private static ArgDecl argPort = new ArgDecl(ArgDecl.HasValue, "port") ;
- private static ArgDecl argLocalhost = new ArgDecl(ArgDecl.NoValue, "localhost", "local") ;
- private static ArgDecl argTimeout = new ArgDecl(ArgDecl.HasValue, "timeout") ;
- private static ArgDecl argFusekiConfig = new ArgDecl(ArgDecl.HasValue, "config", "conf") ;
- private static ArgDecl argJettyConfig = new ArgDecl(ArgDecl.HasValue, "jetty-config") ;
- private static ArgDecl argGZip = new ArgDecl(ArgDecl.HasValue, "gzip") ;
- private static ArgDecl argUber = new ArgDecl(ArgDecl.NoValue, "uber", "über") ; // Use the überservlet (experimental)
- private static ArgDecl argBasicAuth = new ArgDecl(ArgDecl.HasValue, "basic-auth") ;
-
- private static ArgDecl argGSP = new ArgDecl(ArgDecl.NoValue, "gsp") ; // GSP compliance mode
-
- private static ArgDecl argHome = new ArgDecl(ArgDecl.HasValue, "home") ;
- private static ArgDecl argPages = new ArgDecl(ArgDecl.HasValue, "pages") ;
-
- //private static ModLocation modLocation = new ModLocation() ;
- private static ModDatasetAssembler modDataset = new ModDatasetAssembler() ;
-
- // fuseki [--mem|--desc assembler.ttl] [--port PORT] **** /datasetURI
-
- static public void main(String...argv)
- {
- // Just to make sure ...
- ARQ.init() ;
- TDB.init() ;
- Fuseki.init() ;
- new FusekiCmd(argv).mainRun() ;
- }
-
- private int port = 3030 ;
- private int mgtPort = -1 ;
- private boolean listenLocal = false ;
-
- private DatasetGraph dsg = null ;
- private String datasetPath = null ;
- private boolean allowUpdate = false ;
-
- private String fusekiConfigFile = null ;
- private boolean enableCompression = true ;
- private String jettyConfigFile = null ;
- private String authConfigFile = null ;
- private String homeDir = null ;
- private String pagesDir = null ;
-
- public FusekiCmd(String...argv)
- {
- super(argv) ;
-
- if ( false )
- // Consider ...
- TransactionManager.QueueBatchSize = TransactionManager.QueueBatchSize / 2 ;
-
- getUsage().startCategory("Fuseki") ;
- addModule(modDataset) ;
- add(argMem, "--mem", "Create an in-memory, non-persistent dataset for the server") ;
- add(argFile, "--file=FILE", "Create an in-memory, non-persistent dataset for the server, initialised with the contents of the file") ;
- add(argTDB, "--loc=DIR", "Use an existing TDB database (or create if does not exist)") ;
- add(argMemTDB, "--memTDB", "Create an in-memory, non-persistent dataset using TDB (testing only)") ;
- add(argPort, "--port", "Listen on this port number") ;
- add(argPages, "--pages=DIR", "Set of pages to serve as static content") ;
- // Set via jetty config file.
- add(argLocalhost, "--localhost", "Listen only on the localhost interface") ;
- add(argTimeout, "--timeout=", "Global timeout applied to queries (value in ms) -- format is X[,Y] ") ;
- add(argAllowUpdate, "--update", "Allow updates (via SPARQL Update and SPARQL HTTP Update)") ;
- add(argFusekiConfig, "--config=", "Use a configuration file to determine the services") ;
- add(argJettyConfig, "--jetty-config=FILE", "Set up the server (not services) with a Jetty XML file") ;
- add(argBasicAuth, "--basic-auth=FILE", "Configure basic auth using provided Jetty realm file, ignored if --jetty-config is used") ;
- add(argMgtPort, "--mgtPort=port", "Enable the management commands on the given port") ;
- add(argHome, "--home=DIR", "Root of Fuseki installation (overrides environment variable FUSEKI_HOME)") ;
- add(argGZip, "--gzip=on|off", "Enable GZip compression (HTTP Accept-Encoding) if request header set") ;
-
- add(argUber) ;
- //add(argGSP) ;
-
- super.modVersion.addClass(TDB.class) ;
- super.modVersion.addClass(Fuseki.class) ;
- }
-
- static String argUsage = "[--config=FILE] [--mem|--desc=AssemblerFile|--file=FILE] [--port PORT] /DatasetPathName" ;
-
- @Override
- protected String getSummary()
- {
- return getCommandName()+" "+argUsage ;
- }
-
- @Override
- protected void processModulesAndArgs()
- {
- int x = 0 ;
-
- Logger log = Fuseki.serverLog ;
-
- if ( contains(argFusekiConfig) )
- fusekiConfigFile = getValue(argFusekiConfig) ;
-
- ArgDecl assemblerDescDecl = new ArgDecl(ArgDecl.HasValue, "desc", "dataset") ;
- if ( contains(argMem) ) x++ ;
- if ( contains(argFile) ) x++ ;
- if ( contains(assemblerDescDecl) ) x++ ;
- if ( contains(argTDB) ) x++ ;
- if ( contains(argMemTDB) ) x++ ;
-
- if ( fusekiConfigFile != null )
- {
- if ( x >= 1 )
- throw new CmdException("Dataset specified on the command line but a configuration file also given.") ;
- }
- else
- {
- if ( x != 1 )
- throw new CmdException("Required: either --config=FILE or one of --mem, --file, --loc or --desc") ;
- }
-
- // One of:
- // argMem, argFile, argMemTDB, argTDB,
-
-
- if ( contains(argMem) )
- {
- log.info("Dataset: in-memory") ;
- dsg = DatasetGraphFactory.createMem() ;
- }
- if ( contains(argFile) )
- {
- dsg = DatasetGraphFactory.createMem() ;
- // replace by RiotLoader after ARQ refresh.
- String filename = getValue(argFile) ;
- log.info("Dataset: in-memory: load file: "+filename) ;
- if ( ! FileOps.exists(filename) )
- throw new CmdException("File not found: "+filename) ;
-
- Lang language = RDFLanguages.filenameToLang(filename) ;
- if ( language == null )
- throw new CmdException("Can't guess language for file: "+filename) ;
- InputStream input = IO.openFile(filename) ;
-
- if ( RDFLanguages.isQuads(language) )
- RDFDataMgr.read(dsg, filename) ;
- else
- RDFDataMgr.read(dsg.getDefaultGraph(), filename) ;
- }
-
- if ( contains(argMemTDB) )
- {
- log.info("TDB dataset: in-memory") ;
- dsg = TDBFactory.createDatasetGraph() ;
- }
-
- if ( contains(argTDB) )
- {
- String dir = getValue(argTDB) ;
-
- if ( Lib.equal(dir, Names.memName) ) {
- log.info("TDB dataset: in-memory") ;
- } else {
- if ( ! FileOps.exists(dir) )
- throw new CmdException("Directory not found: "+dir) ;
- log.info("TDB dataset: directory="+dir) ;
- }
- dsg = TDBFactory.createDatasetGraph(dir) ;
- }
-
- // Otherwise
- if ( contains(assemblerDescDecl) )
- {
- log.info("Dataset from assembler") ;
- Dataset ds = modDataset.createDataset() ;
- if ( ds != null )
- dsg = ds.asDatasetGraph() ;
- }
-
- if ( contains(argFusekiConfig) )
- {
- if ( dsg != null )
- throw new CmdException("(internal error) Dataset specificed on the command line but a a configuration file also given.") ;
- fusekiConfigFile = getValue(argFusekiConfig) ;
- }
-
- if ( contains(argPort) )
- {
- String portStr = getValue(argPort) ;
- try {
- port = Integer.parseInt(portStr) ;
- } catch (NumberFormatException ex)
- {
- throw new CmdException(argPort.getKeyName()+" : bad port number: "+portStr) ;
- }
- }
-
- if ( contains(argMgtPort) )
- {
- String mgtPortStr = getValue(argMgtPort) ;
- try {
- mgtPort = Integer.parseInt(mgtPortStr) ;
- } catch (NumberFormatException ex)
- {
- throw new CmdException(argMgtPort.getKeyName()+" : bad port number: "+mgtPortStr) ;
- }
- }
-
- if ( contains(argLocalhost) )
- listenLocal = true ;
-
- if ( fusekiConfigFile == null && dsg == null )
- throw new CmdException("No dataset defined and no configuration file: "+argUsage) ;
-
- if ( dsg != null )
- {
- if ( getPositional().size() == 0 )
- throw new CmdException("No dataset path name given") ;
- if ( getPositional().size() > 1 )
- throw new CmdException("Multiple dataset path names given") ;
- datasetPath = getPositionalArg(0) ;
- if ( datasetPath.length() > 0 && ! datasetPath.startsWith("/") )
- throw new CmdException("Dataset path name must begin with a /: "+datasetPath) ;
-
- allowUpdate = contains(argAllowUpdate) ;
- }
-
- if ( contains(argTimeout) )
- {
- String str = getValue(argTimeout) ;
- ARQ.getContext().set(ARQ.queryTimeout, str) ;
- }
-
- if ( contains(argJettyConfig) )
- {
- jettyConfigFile = getValue(argJettyConfig) ;
- if ( !FileOps.exists(jettyConfigFile) )
- throw new CmdException("No such file: "+jettyConfigFile) ;
- }
-
- if ( contains(argBasicAuth) )
- {
- authConfigFile = getValue(argBasicAuth) ;
- if ( !FileOps.exists(authConfigFile) )
- throw new CmdException("No such file: " + authConfigFile) ;
- }
-
- if ( contains(argHome) )
- {
- List<String> args = super.getValues(argHome) ;
- homeDir = args.get(args.size()-1) ;
- }
-
- if ( contains(argPages) )
- {
- List<String> args = super.getValues(argPages) ;
- pagesDir = args.get(args.size()-1) ;
- }
-
- if ( contains(argGZip) )
- {
- if ( ! hasValueOfTrue(argGZip) && ! hasValueOfFalse(argGZip) )
- throw new CmdException(argGZip.getNames().get(0)+": Not understood: "+getValue(argGZip)) ;
- enableCompression = super.hasValueOfTrue(argGZip) ;
- }
-
- if ( contains(argUber) )
- SPARQLServer.überServlet = true ;
-
- if ( contains(argGSP) )
- {
- SPARQLServer.überServlet = true ;
- Fuseki.graphStoreProtocolPostCreate = true ;
- }
-
- }
-
- private static String sort_out_dir(String path)
- {
- path.replace('\\', '/') ;
- if ( ! path.endsWith("/"))
- path = path +"/" ;
- return path ;
- }
-
- @Override
- protected void exec()
- {
- if ( homeDir == null )
- {
- if ( System.getenv(Fuseki.FusekiHomeEnv) != null )
- homeDir = System.getenv(Fuseki.FusekiHomeEnv) ;
- else
- homeDir = "." ;
- }
-
- homeDir = sort_out_dir(homeDir) ;
- Fuseki.configLog.info("Home Directory: " + FileOps.fullDirectoryPath(homeDir));
- if ( ! FileOps.exists(homeDir) )
- Fuseki.configLog.warn("No such directory for Fuseki home: "+homeDir) ;
-
- String staticContentDir = pagesDir ;
- if ( staticContentDir == null )
- staticContentDir = homeDir+Fuseki.PagesStatic ;
-
- Fuseki.configLog.debug("Static Content Directory: "+ FileOps.fullDirectoryPath(staticContentDir)) ;
-
- if ( ! FileOps.exists(staticContentDir) ) {
- Fuseki.configLog.warn("No such directory for static content: " + FileOps.fullDirectoryPath(staticContentDir)) ;
- Fuseki.configLog.warn("You may need to set the --pages or --home option to configure static content correctly");
- }
-
- if ( jettyConfigFile != null )
- Fuseki.configLog.info("Jetty configuration: "+jettyConfigFile) ;
-
- ServerConfig serverConfig ;
-
- if ( fusekiConfigFile != null )
- {
- Fuseki.configLog.info("Configuration file: "+fusekiConfigFile) ;
- serverConfig = FusekiConfig.configure(fusekiConfigFile) ;
- }
- else
- {
- serverConfig = FusekiConfig.defaultConfiguration(datasetPath, dsg, allowUpdate, listenLocal) ;
- if ( ! allowUpdate )
- Fuseki.serverLog.info("Running in read-only mode.");
- }
-
- // TODO Get from parsing config file.
- serverConfig.port = port ;
- serverConfig.pages = staticContentDir ;
- serverConfig.mgtPort = mgtPort ;
- serverConfig.pagesPort = port ;
- serverConfig.loopback = listenLocal ;
- serverConfig.enableCompression = enableCompression ;
- serverConfig.jettyConfigFile = jettyConfigFile ;
- serverConfig.authConfigFile = authConfigFile ;
- serverConfig.verboseLogging = ( super.isVerbose() || super.isDebug() ) ;
-
- SPARQLServer server = new SPARQLServer(serverConfig) ;
-
- // Temporary
- Fuseki.setServer(server) ;
-
- Server mgtServer = null ;
-
- if ( mgtPort > 0 )
- {
- Fuseki.configLog.info("Management services on port "+mgtPort) ;
- mgtServer = ManagementServer.createManagementServer(mgtPort) ;
- try { mgtServer.start() ; }
- catch (java.net.BindException ex)
- { serverLog.error("SPARQLServer: Failed to start management server: " + ex.getMessage()) ; System.exit(1) ; }
- catch (Exception ex)
- { serverLog.error("SPARQLServer: Failed to start management server: " + ex.getMessage(), ex) ; System.exit(1) ; }
- }
-
- server.start() ;
- try { server.getServer().join() ; } catch (Exception ex) {}
-
- if ( mgtServer != null )
- {
- try { mgtServer.stop() ; }
- catch (Exception e) { serverLog.warn("Failed to cleanly stop the management server", e) ; }
- }
- System.exit(0) ;
- }
-
-
- @Override
- protected String getCommandName()
- {
- return "fuseki" ;
- }
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiConfigException.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiConfigException.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiConfigException.java
deleted file mode 100644
index 5e1b018..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiConfigException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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;
-
-
-public class FusekiConfigException extends FusekiException
-{
- public FusekiConfigException(String msg, Throwable cause) { super(msg, cause) ; }
- public FusekiConfigException(String msg) { super(msg) ; }
- public FusekiConfigException(Throwable cause) { super(cause) ; }
- public FusekiConfigException() { super() ; }
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiException.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiException.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiException.java
deleted file mode 100644
index 04953ce..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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;
-
-import com.hp.hpl.jena.sparql.ARQException ;
-
-public class FusekiException extends ARQException
-{
- public FusekiException(String msg, Throwable cause) { super(msg, cause) ; }
- public FusekiException(String msg) { super(msg) ; }
- public FusekiException(Throwable cause) { super(cause) ; }
- public FusekiException() { super() ; }
-}
http://git-wip-us.apache.org/repos/asf/jena/blob/662cf71d/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiLib.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiLib.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiLib.java
deleted file mode 100644
index 5324793..0000000
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/FusekiLib.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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;
-
-import java.util.Iterator ;
-
-import javax.servlet.http.HttpServletRequest ;
-
-import org.apache.commons.lang.StringUtils ;
-import org.apache.jena.atlas.lib.MultiMap ;
-import org.apache.jena.atlas.lib.MultiMapToList ;
-import org.apache.jena.atlas.web.ContentType ;
-import org.apache.jena.fuseki.servlets.HttpAction ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFLanguages ;
-
-import com.hp.hpl.jena.graph.Graph ;
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.graph.Triple ;
-import com.hp.hpl.jena.shared.PrefixMapping ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.Quad ;
-import com.hp.hpl.jena.sparql.util.Convert ;
-
-public class FusekiLib {
- /** Get the content type of an action or return the default.
- * @param action
- * @return ContentType
- */
- public static ContentType getContentType(HttpAction action) {
- return getContentType(action.request) ;
- }
-
- /** Get the content type of an action or return the default.
- * @param request
- * @return ContentType
- */
- public static ContentType getContentType(HttpServletRequest request) {
- String contentTypeHeader = request.getContentType() ;
- if ( contentTypeHeader == null )
- return null ;
- return ContentType.create(contentTypeHeader) ;
- }
-
- /** Get the incoming Lang based on Content-Type of an action.
- * @param action
- * @param dft Default if no "Content-Type:" found.
- * @return ContentType
- */
- public static Lang getLangFromAction(HttpAction action, Lang dft) {
- String contentTypeHeader = action.request.getContentType() ;
- if ( contentTypeHeader == null )
- return dft ;
- return RDFLanguages.contentTypeToLang(contentTypeHeader) ;
- }
-
- static String fmtRequest(HttpServletRequest request) {
- StringBuilder sbuff = new StringBuilder() ;
- sbuff.append(request.getMethod()) ;
- sbuff.append(" ") ;
- sbuff.append(Convert.decWWWForm(request.getRequestURL())) ;
-
- String qs = request.getQueryString() ;
- if ( qs != null ) {
- String tmp = request.getQueryString() ;
- tmp = Convert.decWWWForm(tmp) ;
- tmp = tmp.replace('\n', ' ') ;
- tmp = tmp.replace('\r', ' ') ;
- sbuff.append("?").append(tmp) ;
- }
- return sbuff.toString() ;
- }
-
- /** Parse the query string - do not process the body even for a form */
- public static MultiMap<String, String> parseQueryString(HttpServletRequest req) {
- MultiMap<String, String> map = MultiMapToList.create() ;
-
- // Don't use ServletRequest.getParameter or getParamterNames
- // as that reads form data. This code parses just the query string.
- if ( req.getQueryString() != null ) {
- String[] params = req.getQueryString().split("&") ;
- for ( String p : params )
- {
- String[] x = p.split( "=", 2 );
- String name = null;
- String value = null;
-
- if ( x.length == 0 )
- { // No "="
- name = p;
- value = "";
- }
- else if ( x.length == 1 )
- { // param=
- name = x[0];
- value = "";
- }
- else
- { // param=value
- name = x[0];
- value = x[1];
- }
- map.put( name, value );
- }
- }
- return map ;
- }
-
- public static String safeParameter(HttpServletRequest request, String pName) {
- String value = request.getParameter(pName) ;
- value = StringUtils.replaceChars(value, "\r", "") ;
- value = StringUtils.replaceChars(value, "\n", "") ;
- return value ;
- }
-
- // Do the addition directly on the dataset
- public static void addDataInto(Graph data, DatasetGraph dsg, Node graphName) {
- // Prefixes?
- if ( graphName == null )
- graphName = Quad.defaultGraphNodeGenerated ;
-
- Iterator<Triple> iter = data.find(Node.ANY, Node.ANY, Node.ANY) ;
- for (; iter.hasNext();) {
- Triple t = iter.next() ;
- dsg.add(graphName, t.getSubject(), t.getPredicate(), t.getObject()) ;
- }
-
- PrefixMapping pmapSrc = data.getPrefixMapping() ;
- PrefixMapping pmapDest = dsg.getDefaultGraph().getPrefixMapping() ;
- pmapDest.setNsPrefixes(pmapSrc) ;
- }
-}