001: /*
002: * $Id: SimpleRealm.java,v 1.14 2002/09/16 08:05:06 jkl Exp $
003: *
004: * Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
005: *
006: * Use is subject to license terms, as defined in
007: * Anvil Sofware License, Version 1.1. See LICENSE
008: * file, or http://njet.org/license-1.1.txt
009: */
010: package anvil.server.simple;
011:
012: import java.util.Iterator;
013: import java.util.HashSet;
014: import java.util.ArrayList;
015: import java.util.List;
016: import anvil.java.util.BindingEnumeration;
017: import anvil.core.Any;
018: import anvil.core.Array;
019: import anvil.java.util.Hashlist;
020: import anvil.util.Map;
021: import anvil.server.RealmPreferences;
022: import anvil.server.Zone;
023: import anvil.server.Citizen;
024: import anvil.server.Realm;
025: import anvil.server.Tribe;
026: import anvil.server.Citizen;
027: import anvil.server.Realm;
028: import anvil.server.Tribe;
029: import anvil.server.Citizen;
030: import anvil.server.OperationFailedException;
031:
032: /**
033: * interface SimpleRealm
034: *
035: * @author: Jani Lehtimäki
036: */
037:
038: public class SimpleRealm implements Realm {
039:
040: private Map _map = new Map();
041: private Hashlist _citizens = new Hashlist();
042: private SimpleTribe _root;
043: private Zone _zone;
044: private String _name;
045:
046: public SimpleRealm() {
047: SimpleTribe root = new SimpleTribe(this , "root");
048: SimpleCitizen user = (SimpleCitizen) createCitizen("user",
049: "xxx");
050: root.attach(user);
051: setRoot(root);
052: }
053:
054: public String toString() {
055: return "SimpleRealm(" + _name + ")";
056: }
057:
058: void addMapping(Object a, Object b) {
059: _map.add(a, b);
060: }
061:
062: void removeMapping(Object a, Object b) {
063: _map.remove(a, b);
064: }
065:
066: void removeMappings(Object a) {
067: _map.remove(a);
068: }
069:
070: boolean isMapped(Object o, Class elemcls, boolean left,
071: boolean right) {
072: return _map.isMapped(o, elemcls, left, right);
073: }
074:
075: Object[] getMappings(Object o, Class elemcls, boolean left,
076: boolean right) {
077: return _map.get(o, elemcls, left, right);
078: }
079:
080: public void initialize(RealmPreferences prefs) {
081: _zone = prefs.getParent();
082: _name = prefs.getName();
083: _zone.log().info("Realm " + this + " initialized");
084: }
085:
086: public Citizen getAnonymousCitizen() {
087: return null;
088: }
089:
090: public Citizen[] searchCitizenByVariable(String variable,
091: String value) {
092: return null;
093: }
094:
095: public Citizen getCitizen(String username) {
096: Citizen citizen = (Citizen) _citizens.get(username);
097: if (citizen == null) {
098: Citizen mc = createCitizen(username, "xxx");
099: _root.attach(mc);
100: citizen = mc;
101: }
102: return citizen;
103: }
104:
105: public Tribe getTribe(String name) {
106: if (name == null) {
107: return null;
108: } else if (name.equals("root")) {
109: return _root;
110: } else {
111: return new SimpleTribe(this , name);
112: }
113: }
114:
115: public Citizen createCitizen(String name, String credentials) {
116: SimpleCitizen citizen = new SimpleCitizen(this , name,
117: credentials);
118: _citizens.put(citizen.getName(), citizen);
119: return citizen;
120: }
121:
122: public Citizen createCitizen(String name, String credentials,
123: String[][] params) {
124: return createCitizen(name, credentials);
125: }
126:
127: public Tribe createTribe(String name) {
128: return new SimpleTribe(this , name);
129: }
130:
131: public Tribe getRoot() {
132: return _root;
133: }
134:
135: public void setRoot(Tribe tribe) {
136: _root = (SimpleTribe) tribe;
137: }
138:
139: public void stop() {
140: _map.clear();
141: _citizens.clear();
142: _root = null;
143: _zone.log().info("Realm " + this + " stopped");
144: }
145:
146: }
|