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