001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Scott Ferguson
028: */
029:
030: package com.caucho.ejb.protocol;
031:
032: import com.caucho.config.ConfigException;
033: import com.caucho.ejb.AbstractServer;
034: import com.caucho.ejb.manager.EjbContainer;
035: import com.caucho.util.L10N;
036: import com.caucho.vfs.Path;
037:
038: /**
039: * Server containing all the EJBs for a given configuration.
040: *
041: * <p>Each protocol will extend the container to override Handle creation.
042: */
043: public class ProtocolContainer {
044: private static final L10N L = new L10N(ProtocolContainer.class);
045:
046: protected EjbProtocolManager _manager;
047: protected String _urlPrefix;
048: private Path _workPath;
049:
050: public void setServerManager(EjbContainer container) {
051: _manager = container.getProtocolManager();
052: }
053:
054: public EjbProtocolManager getProtocolManager() {
055: return _manager;
056: }
057:
058: public void setProtocolManager(EjbProtocolManager manager) {
059: _manager = manager;
060: }
061:
062: public String getName() {
063: return "jvm";
064: }
065:
066: public void setURLPrefix(String urlPrefix) {
067: if (urlPrefix.endsWith("/"))
068: urlPrefix = urlPrefix.substring(urlPrefix.length() - 1);
069:
070: _urlPrefix = urlPrefix;
071: }
072:
073: public String getURLPrefix() {
074: return _urlPrefix;
075: }
076:
077: public void setWorkPath(Path workPath) {
078: _workPath = workPath;
079: }
080:
081: public Path getWorkPath() {
082: return _workPath;
083: }
084:
085: /**
086: * Adds a server to the protocol.
087: */
088: public void addServer(AbstractServer server) {
089: }
090:
091: /**
092: * Removes a server from the protocol.
093: */
094: public void removeServer(AbstractServer server) {
095: }
096:
097: protected HandleEncoder createHandleEncoder(AbstractServer server,
098: Class primaryKeyClass) throws ConfigException {
099: if (_urlPrefix != null)
100: return new HandleEncoder(server, _urlPrefix
101: + server.getProtocolId());
102: else
103: return new HandleEncoder(server, server.getProtocolId());
104: }
105:
106: /**
107: * Returns the skeleton
108: */
109: public Skeleton getSkeleton(String uri, String queryString)
110: throws Exception {
111: throw new UnsupportedOperationException();
112: }
113:
114: /**
115: * Returns the error
116: */
117: public Skeleton getExceptionSkeleton() throws Exception {
118: throw new UnsupportedOperationException();
119: }
120: }
|