001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.juneau.rest.server.rdf.config; 018 019import org.apache.juneau.commons.bean.*; 020import org.apache.juneau.marshall.*; 021import org.apache.juneau.marshall.html.*; 022import org.apache.juneau.marshall.jena.*; 023import org.apache.juneau.marshall.json.*; 024import org.apache.juneau.marshall.json5.*; 025import org.apache.juneau.marshall.msgpack.*; 026import org.apache.juneau.marshall.oapi.*; 027import org.apache.juneau.marshall.plaintext.*; 028import org.apache.juneau.marshall.serializer.*; 029import org.apache.juneau.marshall.soap.*; 030import org.apache.juneau.marshall.uon.*; 031import org.apache.juneau.marshall.urlencoding.*; 032import org.apache.juneau.marshall.xml.*; 033import org.apache.juneau.rest.server.*; 034import org.apache.juneau.rest.server.config.*; 035import org.apache.juneau.rest.server.servlet.*; 036 037/** 038 * Identical to {@link BasicUniversalConfig} but includes RDF marshalling support. 039 * 040 * <p> 041 * Default settings defined: 042 * </p> 043 * <ul class='spaced-list'> 044 * <li class='ja'>{@link Rest}: 045 * <ul> 046 * <li class='jma'>{@link Rest#serializers() serializers}: 047 * <ul class='javatree'> 048 * <li class='jc'>{@link HtmlDocSerializer} 049 * <li class='jc'>{@link HtmlStrippedDocSerializer} 050 * <li class='jc'>{@link HtmlSchemaDocSerializer} 051 * <li class='jc'>{@link JsonSerializer} 052 * <li class='jc'>{@link Json5Serializer} 053 * <li class='jc'>{@link JsonSchemaSerializer} 054 * <li class='jc'>{@link XmlDocSerializer} 055 * <li class='jc'>{@link UonSerializer} 056 * <li class='jc'>{@link UrlEncodingSerializer} 057 * <li class='jc'>{@link OpenApiSerializer} 058 * <li class='jc'>{@link MsgPackSerializer} 059 * <li class='jc'>{@link SoapXmlSerializer} 060 * <li class='jc'>{@link PlainTextSerializer} 061 * <li class='jc'>{@link RdfXmlSerializer} 062 * <li class='jc'>{@link RdfXmlAbbrevSerializer} 063 * <li class='jc'>{@link TurtleSerializer} 064 * <li class='jc'>{@link NTripleSerializer} 065 * <li class='jc'>{@link N3Serializer} 066 * <li class='jc'>{@link JsonLdSerializer} 067 * <li class='jc'>{@link NQuadsSerializer} 068 * <li class='jc'>{@link TriGSerializer} 069 * <li class='jc'>{@link TriXSerializer} 070 * <li class='jc'>{@link RdfJsonSerializer} 071 * <li class='jc'>{@link RdfThriftSerializer} 072 * <li class='jc'>{@link RdfProtoSerializer} 073 * </ul> 074 * </li> 075 * <li class='jma'>{@link Rest#parsers() parsers}: 076 * <ul class='javatree'> 077 * <li class='jc'>{@link JsonParser} 078 * <li class='jc'>{@link Json5Parser} 079 * <li class='jc'>{@link XmlParser} 080 * <li class='jc'>{@link HtmlParser} 081 * <li class='jc'>{@link UonParser} 082 * <li class='jc'>{@link UrlEncodingParser} 083 * <li class='jc'>{@link OpenApiParser} 084 * <li class='jc'>{@link MsgPackParser} 085 * <li class='jc'>{@link PlainTextParser} 086 * <li class='jc'>{@link RdfXmlParser} 087 * <li class='jc'>{@link TurtleParser} 088 * <li class='jc'>{@link NTripleParser} 089 * <li class='jc'>{@link N3Parser} 090 * <li class='jc'>{@link JsonLdParser} 091 * <li class='jc'>{@link NQuadsParser} 092 * <li class='jc'>{@link TriGParser} 093 * <li class='jc'>{@link TriXParser} 094 * <li class='jc'>{@link RdfJsonParser} 095 * <li class='jc'>{@link RdfThriftParser} 096 * <li class='jc'>{@link RdfProtoParser} 097 * </ul> 098 * </li> 099 * <li class='jma'>{@link Rest#config() config}: <js>"$S{juneau.configFile,SYSTEM_DEFAULT}"</js> 100 * </ul> 101 * </li> 102 * <li class='ja'>{@link MarshalledConfig}: 103 * <ul> 104 * <li class='jma'>{@link BeanConfig#ignoreUnknownBeanProperties() ignoreUnknownBeanProperties}: <js>"true"</js> 105 * </ul> 106 * </li> 107 * <li class='ja'>{@link SerializerConfig}: 108 * <ul> 109 * <li class='jma'>{@link SerializerConfig#uriResolution() uriResolution}: <js>"ROOT_RELATIVE"</js> 110 * </ul> 111 * </li> 112 * <li class='ja'>{@link HtmlDocConfig}: 113 * <ul> 114 * <li class='jma'>{@link HtmlDocConfig#header() header}: <js>"<h1>$RS{title}</h1><h2>$RS{operationSummary,description}</h2>$C{REST/header}"</js> 115 * <li class='jma'>{@link HtmlDocConfig#navlinks() navlinks}: <js>"up: request:/.."</js> 116 * <li class='jma'>{@link HtmlDocConfig#stylesheet() stylesheet}: <js>"$C{REST/theme,servlet:/htdocs/themes/devops.css}"</js> 117 * <li class='jma'>{@link HtmlDocConfig#head() head}: <js>"$C{REST/head}"</js> 118 * <li class='jma'>{@link HtmlDocConfig#footer() footer}: <js>"$C{REST/footer}"</js> 119 * <li class='jma'>{@link HtmlDocConfig#nowrap() nowrap}: <js>"true"</js> 120 * </ul> 121 * </li> 122 * </ul> 123 * 124 * <p> 125 * This annotation can be applied to REST resource classes to define common default configurations: 126 * </p> 127 * <p class='bjava'> 128 * <jc>// Used on a top-level resource.</jc> 129 * <ja>@Rest</ja> 130 * <jk>public class</jk> MyResource <jk>extends</jk> RestServlet <jk>implements</jk> BasicUniversalJenaConfig { ... } 131 * </p> 132 * <p class='bjava'> 133 * <jc>// Used on a child resource.</jc> 134 * <ja>@Rest</ja> 135 * <jk>public class</jk> MyResource <jk>extends</jk> RestResource <jk>implements</jk> BasicUniversalJenaConfig { ... } 136 * </p> 137 * 138 * <p> 139 * Note that the framework will aggregate annotations defined on all classes in the class hierarchy with 140 * values defined on child classes overriding values defined on parent classes. That allows any values defined 141 * on this interface to be overridden by annotations defined on the implemented class. 142 * </p> 143 * 144 * <h5 class='section'>See Also:</h5><ul> 145 * <ul class='javatreec'> 146 * <li class='jc'>{@link BasicRestServlet} 147 * <li class='jc'>{@link BasicRestServletGroup} 148 * <li class='jc'>{@link BasicRestResource} 149 * <li class='jc'>{@link BasicRestResourceGroup} 150 * </ul> 151 * <li class='link'>{doc jrs.AnnotatedClasses} 152 * </ul> 153 */ 154// @formatter:off 155@Rest( 156 serializers={ 157 RdfXmlSerializer.class, 158 RdfXmlAbbrevSerializer.class, 159 TurtleSerializer.class, 160 NTripleSerializer.class, 161 N3Serializer.class, 162 JsonLdSerializer.class, 163 NQuadsSerializer.class, 164 TriGSerializer.class, 165 TriXSerializer.class, 166 RdfJsonSerializer.class, 167 RdfThriftSerializer.class, 168 RdfProtoSerializer.class 169 }, 170 parsers={ 171 RdfXmlParser.class, 172 TurtleParser.class, 173 NTripleParser.class, 174 N3Parser.class, 175 JsonLdParser.class, 176 NQuadsParser.class, 177 TriGParser.class, 178 TriXParser.class, 179 RdfJsonParser.class, 180 RdfThriftParser.class, 181 RdfProtoParser.class 182 } 183) 184public interface BasicUniversalJenaConfig extends BasicUniversalConfig {}