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 //  SLPV1SDAAdvert.java: SLPv1 DAAdvert, server side.
28 //  Author:           James Kempf
29 //  Created On:       Thu Sep 10 11:00:26 1998
30 //  Last Modified By: James Kempf
31 //  Last Modified On: Mon Nov  2 15:55:47 1998
32 //  Update Count:     27
33 //
34 
35 
36 package com.sun.slp;
37 
38 import java.util.*;
39 import java.io.*;
40 
41 
42 /**
43  * The SLPV1SDAAdvert class models the SLPv1 DAAdvert message.
44  *
45  * @author James Kempf
46  */
47 
48 class SLPV1SDAAdvert extends SDAAdvert {
49 
SLPV1SDAAdvert(SrvLocHeader hdr, short xid, long timestamp, ServiceURL url, Vector scopes, Vector attrs)50     SLPV1SDAAdvert(SrvLocHeader hdr,
51 		   short xid,
52 		   long timestamp,
53 		   ServiceURL url,
54 		   Vector scopes,
55 		   Vector attrs)
56 	throws ServiceLocationException {
57 
58 	super(hdr, xid, timestamp, url, scopes, attrs);
59 
60     }
61 
62     // Initialize the message.
63 
initialize(long timestamp, ServiceURL url, Vector scopes, Vector attrs)64     void initialize(long timestamp,
65 		    ServiceURL url,
66 		    Vector scopes,
67 		    Vector attrs)
68 	throws ServiceLocationException {
69 
70 	// By using the incoming header, we are assured of
71 	//  getting the encoding required by the client.
72 
73 	SLPHeaderV1 hdr = (SLPHeaderV1)this.hdr;
74 
75 	int i, n = scopes.size();
76 
77 	for (i = 0; i < n; i++) {
78 	    hdr.validateScope((String)scopes.elementAt(i));
79 
80 	}
81 
82 	// If the only scope we support is default and we are to
83 	//  support unscoped regs, then advertise us
84 	//  as an unscoped DA. However, if default is there with others,
85 	//  we keep it.
86 
87 	SLPConfig config = SLPConfig.getSLPConfig();
88 
89 	if (config.getAcceptSLPv1UnscopedRegs() &&
90 	    scopes.size() <= 1 &&
91 	    scopes.contains(Defaults.DEFAULT_SCOPE)) {
92 	    scopes.removeAllElements();
93 
94 	}
95 
96 	// Parse out the payload.
97 
98 	ByteArrayOutputStream baos = new ByteArrayOutputStream();
99 
100 	// Parse out the URL.
101 
102 	hdr.parseServiceURLOut(url, false, baos);
103 
104 	// Parse out the scope list. Same in V1 and V2.
105 
106 	hdr.parseCommaSeparatedListOut(scopes, baos);
107 
108 	hdr.payload = baos.toByteArray();
109 
110 	hdr.iNumReplies = 1;
111 
112 	hdr.constructDescription("DAAdvert",
113 				 "         URL=``" + url + "''\n" +
114 				 "         scopes=``" + scopes + "''\n");
115 
116     }
117 }
118