01: /*
02: * JacORB - a free Java ORB
03: *
04: * Copyright (C) 1997-2004 Gerald Brose.
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Library General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Library General Public License for more details.
15: *
16: * You should have received a copy of the GNU Library General Public
17: * License along with this library; if not, write to the Free
18: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19: */
20:
21: package org.jacorb.orb.giop;
22:
23: import org.omg.BiDirPolicy.BIDIRECTIONAL_POLICY_TYPE;
24: import org.omg.BiDirPolicy.BOTH;
25: import org.omg.BiDirPolicy.BidirectionalPolicyValueHelper;
26: import org.omg.BiDirPolicy.NORMAL;
27: import org.omg.CORBA.Any;
28: import org.omg.CORBA.BAD_POLICY;
29: import org.omg.CORBA.BAD_POLICY_VALUE;
30: import org.omg.CORBA.Policy;
31: import org.omg.CORBA.PolicyError;
32: import org.omg.PortableInterceptor.PolicyFactory;
33:
34: /**
35: * @author Nicolas Noffke
36: * @version $Id: BiDirPolicyFactory.java,v 1.9 2006/06/28 12:41:43 alphonse.bendt Exp $
37: */
38: public class BiDirPolicyFactory extends org.omg.CORBA.LocalObject
39: implements PolicyFactory {
40: public Policy create_policy(int type, Any any) throws PolicyError {
41: if (type != BIDIRECTIONAL_POLICY_TYPE.value) {
42: throw new PolicyError("Invalid policy type of " + type,
43: BAD_POLICY.value);
44: }
45:
46: short value = BidirectionalPolicyValueHelper.extract(any);
47:
48: if (value != NORMAL.value && value != BOTH.value) {
49: throw new PolicyError("Invalid value for BiDir policy of "
50: + value, BAD_POLICY_VALUE.value);
51: }
52:
53: return new BiDirPolicy(value);
54: }
55: }
|