1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright (c) 1999 by Sun Microsystems, Inc.
23  * All rights reserved.
24  *
25  */
26 
27 //  CSrvDereg.java:   Client side Service Deregistration
28 //  Author:           James Kempf
29 //  Created On:       Tue Feb 10 13:17:41 1998
30 //  Last Modified By: James Kempf
31 //  Last Modified On: Tue Oct 27 10:57:38 1998
32 //  Update Count:     42
33 //
34 
35 package com.sun.slp;
36 
37 import java.util.*;
38 import java.io.*;
39 
40 
41 /**
42  * The SrvDeReg class models the server side SLP service deregistration.
43  *
44  * @author James Kempf
45  */
46 
47 
48 class CSrvDereg extends SrvLocMsgImpl {
49 
50     // Construct a CSrvDereg from the arguments. This is the client side
51     //  SrvDereg for transmission to the server.
52 
CSrvDereg(Locale locale, ServiceURL url, Vector scopes, Vector tags, Hashtable auth)53     CSrvDereg(Locale locale,
54 	      ServiceURL url,
55 	      Vector scopes,
56 	      Vector tags,
57 	      Hashtable auth)
58 	throws ServiceLocationException {
59 
60 	// Null tags argument means deregister the service URL, but it
61 	// can't be empty.
62 
63 	if (tags != null && tags.size() <= 0) {
64 	    throw
65 		new IllegalArgumentException(
66 			SLPConfig.getSLPConfig().formatMessage("empty_vector",
67 							       new Object[0]));
68 	}
69 
70 	this.initialize(locale, url, scopes, tags, auth);
71 
72     }
73 
74     // Initialize object. V1 will do it differently.
75 
initialize(Locale locale, ServiceURL url, Vector scopes, Vector tags, Hashtable auth)76     void initialize(Locale locale,
77 		    ServiceURL url,
78 		    Vector scopes,
79 		    Vector tags,
80 		    Hashtable auth)
81 	throws ServiceLocationException {
82 
83 	SLPConfig config = SLPConfig.getSLPConfig();
84 	SLPHeaderV2 hdr =
85 	    new SLPHeaderV2(SrvLocHeader.SrvDereg, false, locale);
86 	this.hdr = hdr;
87 	hdr.scopes = (Vector)scopes.clone();
88 
89 	// Escape tags.
90 
91 	if (tags != null) {
92 	    hdr.escapeTags(tags);
93 
94 	} else {
95 	    tags = new Vector();
96 
97 	}
98 
99 	ByteArrayOutputStream baos = new ByteArrayOutputStream();
100 
101 	// Escape scopes.
102 
103 	hdr.escapeScopeStrings(scopes);
104 
105 	// Parse out the scopes.
106 
107 	hdr.parseCommaSeparatedListOut(scopes, baos);
108 
109 	// Parse out the URL. Ignore overflow.
110 
111 	hdr.parseServiceURLOut(url,
112 			       config.getHasSecurity(),
113 			       auth,
114 			       baos,
115 			       false);
116 
117 	// Parse out the tags.
118 
119 	hdr.parseCommaSeparatedListOut(tags, baos);
120 
121 	hdr.payload = baos.toByteArray();
122 
123     }
124 
125 }
126