Package net.jini.print.lookup contains classes used for registering and finding Jini Print Service instances in the Jini Lookup Service (JLUS). Specifically, package net.jini.print.lookup contains classes (that implement interface net.jini.core.entry.Entry) for the service attributes that are associated with a Jini Print Service instance's service registration in the JLUS.

The sections below describe the lookup scheme used to find Jini Print Service instances in the JLUS. The lookup scheme consists of service interfaces and service attributes.

## Service Interfaces

A Jini Print Service instance's service proxy object implements interfaces from package net.jini.print.service as listed below. These then constitute the service interfaces the JLUS uses to categorize the service proxy object when it is registered into the JLUS. A client can search the JLUS for a Jini Print Service instance with the desired capabilities by including the corresponding service interfaces in the service template.

Some service interfaces are mandatorily implemented by all Jini Print Service instances. Other service interfaces are optional and implemented only if the Jini Print Service instance supports that capability.

- PrintService -- mandatory
- MultiDocPrintService -- optional
- LocalizedPrintService -- optional

## Service Attributes

Much of Jini's power comes from being able to search the JLUS for services with desired characteristics. So that Jini Print Service clients will be able to rely on the presence of a standard set of service attributes, every Jini Print Service instance must include service attributes in its service registration according to the scheme described below.

The service attributes fall into four categories: general attributes, supported print data formats, supported printing attributes, and supported locales.

### General Attributes

Each Jini Print Service instance must register the following service attribute, filling in the fields listed below with the proper values for the printer.

- net.jini.print.lookup.PrinterDescriptionEntry
  - PrinterName -- mandatory
  - PrinterLocation
  - PrinterInfo
  - PrinterMoreInfo
  - PrinterMakeAndModel
  - PrinterMoreInfoManufacturer
  - ColorSupported
  - PDLOverrideSupported -- mandatory
  - PagesPerMinute
  - PagesPerMinuteColor

  The PrinterName and PDLOverrideSupported fields are mandatory and must always be set to non-null values. The remaining fields are optional and may be set to null to indicate "not specified." However, if the PagesPerMinuteColor field is set to a non-null value, the ColorSupported field must be set to a value of SUPPORTED.

Each Jini Print Service instance may optionally register the following standard Jini service attributes, filling in all fields with the proper values for the printer. If present, the standard Jini service attributes should include the same information as the PrinterDescriptionEntry.

- net.jini.lookup.entry.Address -- street, organization, organizational unit, locality, state or province, postal code, country.
- net.jini.lookup.entry.Comment -- comment string. A print service may register more than one Comment attribute.
- net.jini.lookup.entry.Location -- floor, room, building.
- net.jini.lookup.entry.Name -- print service name. A print service may register more than one Name attribute.
- net.jini.lookup.entry.ServiceInfo -- product name, manufacturer, vendor, version, model, serial number.
- net.jini.lookup.entry.ServiceType -- localized icons, localized name, and localized short description.

The PrinterDescriptionEntry is included so printing client applications can use the printing attribute classes to search for Jini Print Service instances. The service attributes from package net.jini.lookup.entry are included so generic Jini service browsing applications (which may know about the standard Jini service attributes but may not know about the PrinterDescriptionEntry) can search for Jini Print Service instances.

### Supported Print Data Formats

A print data format, known as a "doc flavor," is designated by an instance of class DocFlavor from package javax.print.data. To indicate which print data formats it supports, a Jini Print Service instance must register a separate service attribute of class FlavorEntry for each supported doc flavor.

### Supported Printing Attributes

Certain printing attributes from package javax.print.attribute.standard represent features a client can request for a print job. A Jini Print Service instance's service registration advertises whether the printer supports these features (attributes) and which attribute values it supports. This lets the client search the JLUS to find printers with the features the client needs. (Other printing attributes from package javax.print.attribute.standard are used to indicate printer status or job status; such attributes are not included in the service registration.)

To indicate which standard or vendor-supplied printing attributes and printing attribute values it supports, a Jini Print Service instance must register a separate service attribute of class AttributeEntry for each supported printing attribute value. The Media attribute, however, is handled differently. A Jini Print Service instance must register a separate service attribute of class MediaEntry for each supported media attribute value.

For each printing attribute a client can request for a print job, the table below indicates the printing attribute class; whether supporting the printing attribute is mandatory or optional; and the requirements for registering an AttributeEntry or MediaEntry instance or instances for the printing attribute values. See the printing attribute class's documentation for further information on whether the attribute is mandatory or optional and which attribute values are mandatory or optional.

Printing Attribute Class | Mandatory or Optional Support | Entry Requirements
--- | --- | ---
Chromaticity | Optional | If supported, one AttributeEntry registered for each supported chromaticity value
Compression | Mandatory | One AttributeEntry registered for each supported compression value
Copies | Optional | If supported, a single AttributeEntry registered containing a CopiesSupported attribute with the supported copies values
DocumentName | Mandatory | Not registered in the JLUS; all values supported
FinishingsBinding | Optional | If supported, one AttributeEntry registered for each supported finishings binding value
FinishingsCover | Optional | If supported, one AttributeEntry registered for each supported finishings cover value
JobHoldUntil | Optional | If supported, a single AttributeEntry registered containing the JobHoldUntil category and a wildcarded value to indicate all values supported
JobImpressions | Optional | If supported, a single AttributeEntry registered containing a JobImpressionsSupported attribute with the supported job impressions values
JobKOctets | Optional | If supported, a single AttributeEntry registered containing a JobKOctetsSupported attribute with the supported job K octets values
JobMediaSheets | Optional | If supported, a single AttributeEntry registered containing a JobMediaSheetsSupported attribute with the supported job media sheets values
JobName | Mandatory | Not registered in the JLUS; all values supported
JobPriority | Optional | If supported, a single AttributeEntry registered containing a JobPrioritySupported attribute with the number of supported priority levels
JobSheets | Optional | If supported, one AttributeEntry registered for each supported job sheets value
Media | Optional | If supported, one MediaEntry registered for each supported media value
MinimumPrinterResolution | Optional [1] | Not registered in the JLUS; see PrinterResolution
MultipleDocumentHandling | Optional [2] | If supported, one AttributeEntry registered for each supported multiple document handling value
NumberUp | Optional | If supported, a single AttributeEntry registered containing a NumberUpSupported attribute with the supported number up values
OrientationRequested | Optional | If supported, one AttributeEntry registered for each supported orientation requested value
PageRanges | Optional | If supported, a single AttributeEntry registered containing the PageRanges category and a wildcarded value to indicate all values supported
PrinterResolution | Optional | If supported, one AttributeEntry registered for each supported printer resolution value
PrintQuality | Optional | If supported, one AttributeEntry registered for each supported print quality value
ReferenceUriScheme | Optional | If doc flavors with a print data representation class of `"java.net.URL"` are supported, one AttributeEntry registered for each acceptable URI scheme
RequestingUserName | Mandatory | Not registered in the JLUS; all values supported
SheetCollate | Optional | If supported, one AttributeEntry registered for each supported sheet collation value
Sides | Optional | If supported, one AttributeEntry registered for each supported sides value

Notes:

1. If the Jini Print Service instance supports the PrinterResolution attribute, it must also support the MinimumPrinterResolution attribute.

2. If the Jini Print Service instance supports multidoc print jobs (see interface MultiDocPrintService), it must support the MultipleDocumentHandling attribute.

### Supported Locales

A Jini Print Service instance may support the optional capability of generating localized strings for doc flavors, attribute categories, and attribute values, as specified in interface LocalizedPrintService. To advertise that it supports this capability, the service proxy object registered into the JLUS implements interface LocalizedPrintService, and to find a printer that supports localization a client can search the JLUS for that service interface. However, this only tells whether the printer can do localization at all. It doesn't tell which specific locales the printer supports, that is, the locales for which the printer can provided localized strings.

If a Jini Print Service instance supports the optional capability of generating localized strings, then the Jini Print Service instance must register a separate service attribute of class LocaleEntry for each supported locale. This lets a client search for a printer that can generate localized strings for a specific locale.

If a Jini Print Service instance does not support the optional capability of generating localized strings, then the Jini Print Service instance must not register any service attributes of class LocaleEntry.

Placement of this package under package net.jini.print is preliminary and not yet approved by the Jini Community.

DRAFT STANDARD VERSION 1.0 (23-MAY-2000)