1# java.schema -- Java Object Schema
2# $OpenLDAP$
3## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4##
5## Copyright 1998-2011 The OpenLDAP Foundation.
6## All rights reserved.
7##
8## Redistribution and use in source and binary forms, with or without
9## modification, are permitted only as authorized by the OpenLDAP
10## Public License.
11##
12## A copy of this license is available in the file LICENSE in the
13## top-level directory of the distribution or, alternatively, at
14## <http://www.OpenLDAP.org/license.html>.
15#
16# Java Object Schema (defined in RFC 2713)
17#	depends upon core.schema
18#
19
20# Network Working Group                                            V. Ryan
21# Request for Comments: 2713                                   S. Seligman
22# Category: Informational                                           R. Lee
23#                                                   Sun Microsystems, Inc.
24#                                                             October 1999
25# 
26# 
27#      Schema for Representing Java(tm) Objects in an LDAP Directory
28# 
29# Status of this Memo
30# 
31#    This memo provides information for the Internet community.  It does
32#    not specify an Internet standard of any kind.  Distribution of this
33#    memo is unlimited.
34# 
35# Copyright Notice
36# 
37#    Copyright (C) The Internet Society (1999).  All Rights Reserved.
38# 
39# Abstract
40# 
41#    This document defines the schema for representing Java(tm) objects in
42#    an LDAP directory [LDAPv3].  It defines schema elements to represent
43#    a Java serialized object [Serial], a Java marshalled object [RMI], a
44#    Java remote object [RMI], and a JNDI reference [JNDI].
45# 
46
47# [trimmed]
48
49# 3 Attribute Type Definitions
50# 
51#    The following attribute types are defined in this document:
52# 
53#        javaClassName
54#        javaClassNames
55#        javaCodebase
56#        javaSerializedData
57#        javaFactory
58#        javaReferenceAddress
59#        javaDoc
60# 
61# 3.1 javaClassName
62# 
63#    This attribute stores the fully qualified name of the Java object's
64#    "distinguished" class or interface (for example, "java.lang.String").
65#    It is a single-valued attribute. This attribute's syntax is '
66#    Directory String' and its case is significant.
67# 
68#        ( 1.3.6.1.4.1.42.2.27.4.1.6
69#          NAME 'javaClassName'
70#          DESC 'Fully qualified name of distinguished Java class or
71#                interface'
72#          EQUALITY caseExactMatch
73#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
74#          SINGLE-VALUE
75#        )
76# 
77attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6
78	NAME 'javaClassName'
79	DESC 'Fully qualified name of distinguished Java class or interface'
80	EQUALITY caseExactMatch
81	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
82	SINGLE-VALUE )
83 
84# 3.2 javaCodebase
85# 
86#    This attribute stores the Java class definition's locations.  It
87#    specifies the locations from which to load the class definition for
88#    the class specified by the javaClassName attribute.  Each value of
89#    the attribute contains an ordered list of URLs, separated by spaces.
90#    For example, a value of "url1 url2 url3" means that the three
91#    (possibly interdependent) URLs (url1, url2, and url3) form the
92#    codebase for loading in the Java class definition.
93# 
94#    If the javaCodebase attribute contains more than one value, each
95#    value is an independent codebase. That is, there is no relationship
96#    between the URLs in one value and those in another; each value can be
97#    viewed as an alternate source for loading the Java class definition.
98#    See [Java] for information regarding class loading.
99# 
100#    This attribute's syntax is 'IA5 String' and its case is significant.
101# 
102#        ( 1.3.6.1.4.1.42.2.27.4.1.7
103#          NAME 'javaCodebase'
104#          DESC 'URL(s) specifying the location of class definition'
105#          EQUALITY caseExactIA5Match
106#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
107#        )
108# 
109attributetype ( 1.3.6.1.4.1.42.2.27.4.1.7
110	NAME 'javaCodebase'
111	DESC 'URL(s) specifying the location of class definition'
112	EQUALITY caseExactIA5Match
113	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
114
115# 3.3 javaClassNames
116# 
117#    This attribute stores the Java object's fully qualified class or
118#    interface names (for example, "java.lang.String").  It is a
119#    multivalued attribute. When more than one value is present, each is
120#    the name of a class or interface, or ancestor class or interface, of
121#    this object.
122# 
123#    This attribute's syntax is 'Directory String' and its case is
124#    significant.
125# 
126#        ( 1.3.6.1.4.1.42.2.27.4.1.13
127#          NAME 'javaClassNames'
128#          DESC 'Fully qualified Java class or interface name'
129#          EQUALITY caseExactMatch
130#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
131#        )
132# 
133# 
134attributetype ( 1.3.6.1.4.1.42.2.27.4.1.13
135	NAME 'javaClassNames'
136	DESC 'Fully qualified Java class or interface name'
137	EQUALITY caseExactMatch
138	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
139 
140# 3.4 javaSerializedData
141# 
142#    This attribute stores the serialized form of a Java object.  The
143#    serialized form is described in [Serial].
144# 
145#    This attribute's syntax is 'Octet String'.
146# 
147#        ( 1.3.6.1.4.1.42.2.27.4.1.8
148#          NAME 'javaSerializedData
149#          DESC 'Serialized form of a Java object'
150#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
151#          SINGLE-VALUE
152#        )
153# 
154attributetype ( 1.3.6.1.4.1.42.2.27.4.1.8
155	NAME 'javaSerializedData'
156	DESC 'Serialized form of a Java object'
157	SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
158	SINGLE-VALUE )
159
160# 3.5 javaFactory
161# 
162#    This attribute stores the fully qualified class name of the object
163#    factory (for example, "com.wiz.jndi.WizObjectFactory") that can be
164#    used to create an instance of the object identified by the
165#    javaClassName attribute.
166# 
167#    This attribute's syntax is 'Directory String' and its case is
168#    significant.
169# 
170#        ( 1.3.6.1.4.1.42.2.27.4.1.10
171#          NAME 'javaFactory'
172#          DESC 'Fully qualified Java class name of a JNDI object factory'
173#          EQUALITY caseExactMatch
174#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
175#          SINGLE-VALUE
176#        )
177# 
178attributetype ( 1.3.6.1.4.1.42.2.27.4.1.10
179	NAME 'javaFactory'
180	DESC 'Fully qualified Java class name of a JNDI object factory'
181	EQUALITY caseExactMatch
182	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
183	SINGLE-VALUE )
184
185# 3.6 javaReferenceAddress
186# 
187#    This attribute represents the sequence of addresses of a JNDI
188#    reference.  Each of its values represents one address, a Java object
189#    of type javax.naming.RefAddr.  Its value is a concatenation of the
190#    address type and address contents, preceded by a sequence number (the
191#    order of addresses in a JNDI reference is significant).  For example:
192# 
193#        #0#TypeA#ValA
194#        #1#TypeB#ValB
195#        #2#TypeC##rO0ABXNyABpq...
196# 
197#    In more detail, the value is encoded as follows:
198# 
199#    The delimiter is the first character of the value.  For readability
200#    the character '#' is recommended when it is not otherwise used
201#    anywhere in the value, but any character may be used subject to
202#    restrictions given below.
203# 
204#    The first delimiter is followed by the sequence number.  The sequence
205#    number of an address is its position in the JNDI reference, with the
206#    first address being numbered 0.  It is represented by its shortest
207#    string form, in decimal notation.
208# 
209#    The sequence number is followed by a delimiter, then by the address
210#    type, and then by another delimiter.  If the address is of Java class
211#    javax.naming.StringRefAddr, then this delimiter is followed by the
212#    value of the address contents (which is a string).  Otherwise, this
213#    delimiter is followed immediately by another delimiter, and then by
214#    the Base64 encoding of the serialized form of the entire address.
215# 
216#    The delimiter may be any character other than a digit or a character
217#    contained in the address type.  In addition, if the address contents
218#    is a string, the delimiter may not be the first character of that
219#    string.
220# 
221#    This attribute's syntax is 'Directory String' and its case is
222#    significant.  It can contain multiple values.
223# 
224#        ( 1.3.6.1.4.1.42.2.27.4.1.11
225#          NAME 'javaReferenceAddress'
226#          DESC 'Addresses associated with a JNDI Reference'
227#          EQUALITY caseExactMatch
228#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
229#        )
230# 
231attributetype ( 1.3.6.1.4.1.42.2.27.4.1.11
232	NAME 'javaReferenceAddress'
233	DESC 'Addresses associated with a JNDI Reference'
234	EQUALITY caseExactMatch
235	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
236
237# 3.7 javaDoc
238# 
239#    This attribute stores a pointer to the Java documentation for the
240#    class.  It's value is a URL. For example, the following URL points to
241#    the specification of the java.lang.String class:
242#    http://java.sun.com/products/jdk/1.2/docs/api/java/lang/String.html
243# 
244#    This attribute's syntax is 'IA5 String' and its case is significant.
245# 
246#        ( 1.3.6.1.4.1.42.2.27.4.1.12
247#          NAME 'javaDoc'
248#          DESC 'The Java documentation for the class'
249#          EQUALITY caseExactIA5Match
250#          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
251#        )
252# 
253attributetype ( 1.3.6.1.4.1.42.2.27.4.1.12
254	NAME 'javaDoc'
255	DESC 'The Java documentation for the class'
256	EQUALITY caseExactIA5Match
257	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
258
259# 4 Object Class Definitions
260# 
261#    The following object classes are defined in this document:
262# 
263#        javaContainer
264#        javaObject
265#        javaSerializedObject
266#        javaMarshalledObject
267#        javaNamingReference
268# 
269# 4.1 javaContainer
270# 
271#    This structural object class represents a container for a Java
272#    object.
273# 
274#        ( 1.3.6.1.4.1.42.2.27.4.2.1
275#          NAME 'javaContainer'
276#          DESC 'Container for a Java object'
277#          SUP top
278#          STRUCTURAL
279#          MUST ( cn )
280#        )
281# 
282objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1
283	NAME 'javaContainer'
284	DESC 'Container for a Java object'
285	SUP top
286	STRUCTURAL
287	MUST cn )
288
289# 4.2 javaObject
290# 
291#    This abstract object class represents a Java object.  A javaObject
292#    cannot exist in the directory; only auxiliary or structural
293#    subclasses of it can exist in the directory.
294# 
295#        ( 1.3.6.1.4.1.42.2.27.4.2.4
296#          NAME 'javaObject'
297#          DESC 'Java object representation'
298#          SUP top
299#          ABSTRACT
300#          MUST ( javaClassName )
301#          MAY ( javaClassNames $
302#                javaCodebase $
303#                javaDoc $
304#                description )
305#        )
306# 
307objectclass ( 1.3.6.1.4.1.42.2.27.4.2.4
308	NAME 'javaObject'
309	DESC 'Java object representation'
310	SUP top
311	ABSTRACT
312	MUST javaClassName
313	MAY ( javaClassNames $ javaCodebase $
314		javaDoc $ description ) )
315
316# 4.3 javaSerializedObject
317# 
318#    This auxiliary object class represents a Java serialized object.  It
319#    must be mixed in with a structural object class.
320# 
321#        ( 1.3.6.1.4.1.42.2.27.4.2.5
322#          NAME 'javaSerializedObject'
323#          DESC 'Java serialized object'
324#          SUP javaObject
325#          AUXILIARY
326#          MUST ( javaSerializedData )
327#        )
328# 
329objectclass ( 1.3.6.1.4.1.42.2.27.4.2.5
330	NAME 'javaSerializedObject'
331	DESC 'Java serialized object'
332	SUP javaObject
333	AUXILIARY
334	MUST javaSerializedData )
335 
336# 4.4 javaMarshalledObject
337# 
338#    This auxiliary object class represents a Java marshalled object.  It
339#    must be mixed in with a structural object class.
340# 
341#        ( 1.3.6.1.4.1.42.2.27.4.2.8
342#          NAME 'javaMarshalledObject'
343#          DESC 'Java marshalled object'
344#          SUP javaObject
345#          AUXILIARY
346#          MUST ( javaSerializedData )
347#        )
348# 
349objectclass ( 1.3.6.1.4.1.42.2.27.4.2.8
350	NAME 'javaMarshalledObject'
351	DESC 'Java marshalled object'
352	SUP javaObject
353	AUXILIARY
354	MUST javaSerializedData )
355
356# 4.5 javaNamingReference
357# 
358#    This auxiliary object class represents a JNDI reference.  It must be
359#    mixed in with a structural object class.
360# 
361#        ( 1.3.6.1.4.1.42.2.27.4.2.7
362#          NAME 'javaNamingReference'
363#          DESC 'JNDI reference'
364#          SUP javaObject
365#          AUXILIARY
366#          MAY ( javaReferenceAddress $
367#                javaFactory )
368#        )
369# 
370objectclass ( 1.3.6.1.4.1.42.2.27.4.2.7
371	NAME 'javaNamingReference'
372	DESC 'JNDI reference'
373	SUP javaObject
374	AUXILIARY
375	MAY ( javaReferenceAddress $ javaFactory ) )
376 
377# Full Copyright Statement
378# 
379#    Copyright (C) The Internet Society (1999).  All Rights Reserved.
380# 
381#    This document and translations of it may be copied and furnished to
382#    others, and derivative works that comment on or otherwise explain it
383#    or assist in its implementation may be prepared, copied, published
384#    and distributed, in whole or in part, without restriction of any
385#    kind, provided that the above copyright notice and this paragraph are
386#    included on all such copies and derivative works.  However, this
387#    document itself may not be modified in any way, such as by removing
388#    the copyright notice or references to the Internet Society or other
389#    Internet organizations, except as needed for the purpose of
390#    developing Internet standards in which case the procedures for
391#    copyrights defined in the Internet Standards process must be
392#    followed, or as required to translate it into languages other than
393#    English.
394# 
395#    The limited permissions granted above are perpetual and will not be
396#    revoked by the Internet Society or its successors or assigns.
397# 
398#    This document and the information contained herein is provided on an
399#    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
400#    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
401#    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
402#    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
403#    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
404