Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > b5e52bbfb4bb11a6cbed452927fba979 > files > 113

gcc-4.1.2-50.el5.src.rpm

2010-04-27  Andrew Haley  <aph@redhat.com>

	* gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle
	IppValueTag.UNKNOWN.  
	* gnu/javax/print/ipp/IppRequest.java (writeOperationAttributes):
	Handle RequestedAttributes.
	* gnu/javax/print/ipp/IppPrintService.java (processResponse): Add
	DocFlavor.SERVICE_FORMATTED.PAGEABLE and
	DocFlavor.SERVICE_FORMATTED.PRINTABLE.

--- libjava/classpath/gnu/javax/print/ipp/IppRequest.java	(revision 162819)
+++ libjava/classpath/gnu/javax/print/ipp/IppRequest.java	(revision 162820)
@@ -434,6 +434,8 @@ public class IppRequest
       PrinterURI printerUri = (PrinterURI) attributes.get(PrinterURI.class);
       JobUri jobUri = (JobUri) attributes.get(JobUri.class);
       JobId jobId = (JobId) attributes.get(JobId.class);
+      RequestedAttributes reqAttrs 
+	= (RequestedAttributes)attributes.get(RequestedAttributes.class);
       if (printerUri != null && jobId == null && jobUri == null)
         {
           write(printerUri);
@@ -467,6 +469,12 @@ public class IppRequest
           logger.log(Component.IPP, "Attribute: Name: <" + jobUri.getCategory()
             .getName() + "> Value: <" + jobUri.toString() + ">");
         }
+      else if (reqAttrs != null)
+	{
+	  write(reqAttrs);
+	  attributes.remove(RequestedAttributes.class);
+	  logger.log(Component.IPP, "RequestedAttributes: <" + reqAttrs + ">");
+	}
       else
         {
           throw new IppException("Unknown target operation attribute combination.");
--- libjava/classpath/gnu/javax/print/ipp/IppPrintService.java	(revision 162819)
+++ libjava/classpath/gnu/javax/print/ipp/IppPrintService.java	(revision 162820)
@@ -356,8 +356,17 @@ public class IppPrintService implements 
                 // should not happen, all fields are public
               }
           }
+
+	if (this.getClass()
+	    .isAssignableFrom(gnu.javax.print.CupsPrintService.class))
+	  {
+// 	    CUPS always provides filters to convert from Postscript.
+//  	    This logic looks odd, but it's what OpenJDK does.
+	    flavors.add(DocFlavor.SERVICE_FORMATTED.PAGEABLE);
+	    flavors.add(DocFlavor.SERVICE_FORMATTED.PRINTABLE);
+	  }
       }
-    
+
     // printer uris
     Set uris = getPrinterAttributeSet(PrinterUriSupported.class);
     printerUris = new ArrayList(uris.size());
--- libjava/classpath/gnu/javax/print/ipp/IppResponse.java	(revision 162819)
+++ libjava/classpath/gnu/javax/print/ipp/IppResponse.java	(revision 162820)
@@ -302,11 +302,14 @@ public class IppResponse
             // out-of-band values
             case IppValueTag.UNSUPPORTED:
             case IppValueTag.UNKNOWN:
-            case IppValueTag.NO_VALUE:
               // TODO implement out-of-band handling
-              // We currently throw an exception to see when it occurs - not yet :-)              
-              throw new IppException(
-                    "Unexpected name value for out-of-band value tag");
+              // We currently throw an exception to see when it occurs - not yet :-)
+	      throw new IppException(
+                    "Unexpected name value for out-of-band value tag " + tag);
+            case IppValueTag.NO_VALUE:
+	      attribute = null;
+
+	      break;
             case IppValueTag.INTEGER:
               int intValue = IppUtilities.convertToInt(value);
               attribute = IppUtilities.getIntegerAttribute(name, intValue);