01: /**
02: * JOnAS: Java(TM) Open Application Server
03: * Copyright (C) 1999 Bull S.A.
04: * Contact: jonas-team@objectweb.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or 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: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19: * USA
20: *
21: * Initial developer(s): Florent BENOIT
22: * --------------------------------------------------------------------------
23: * $Id: URLFactory.java 4718 2004-05-10 12:06:09Z sauthieg $
24: * --------------------------------------------------------------------------
25: */package org.objectweb.jonas_lib.naming.factory;
26:
27: //import java
28: import java.net.URL;
29: import java.util.Hashtable;
30:
31: //import javax
32: import javax.naming.Context;
33: import javax.naming.Name;
34: import javax.naming.Reference;
35: import javax.naming.spi.ObjectFactory;
36:
37: /**
38: * This class provides an implementation of a mail session factory for
39: * sending mail.
40: * @author Florent Benoit
41: */
42: public class URLFactory implements ObjectFactory {
43:
44: /**
45: * The Java type for which this factory knows how to create objects.
46: */
47: protected static final String FACTORY_TYPE = "java.net.URL";
48:
49: /**
50: * Creates a java.net.URL object using the location or reference
51: * information specified.
52: * @param obj the possibly null object containing location or reference
53: * information that can be used in creating an object.
54: * @param name the name of this object relative to nameCtx, or null if no
55: * name is specified.
56: * @param nameCtx the context relative to which the name parameter is
57: * specified, or null if name is relative to the default initial context.
58: * @param environment the possibly null environment that is used in
59: * creating the object.
60: * @return a newly created java.net.URL object with the specific
61: * configuration; null if an object cannot be created.
62: * @throws Exception if this object factory encountered an exception
63: * while attempting to create an object, and no other object factories
64: * are to be tried.
65: */
66: public Object getObjectInstance(Object obj, Name name,
67: Context nameCtx, Hashtable environment) throws Exception {
68:
69: //Get the reference
70: Reference ref = (Reference) obj;
71:
72: //Get the class name
73: String clname = ref.getClassName();
74:
75: //Check the class name
76: if (!ref.getClassName().equals(FACTORY_TYPE)) {
77: throw new Exception(
78: "Can not create object : required type is '"
79: + FACTORY_TYPE + "', but found type is '"
80: + clname + "'.");
81: }
82:
83: URL url = null;
84: String urlString = (String) ref.get("url").getContent();
85:
86: if (urlString != null) {
87: url = new URL(urlString);
88: } else {
89: throw new Exception(
90: "Can not build an object as no URL was given.");
91: }
92:
93: return url;
94: }
95:
96: }
|