예제 #1
0
		public DynamicTopic DynamicTopicFor(string topic)
		{
            if (_topics == null)
            {
                _topics = new Hashtable();
            }
			DynamicTopic answer = (DynamicTopic)(_topics[topic]);
            if (answer != null)
            {
                return answer;
            }

            TopicName topicName = new TopicName(topic); 

            NamespaceManager manager = CurrentFederation.NamespaceManagerForNamespace(Namespace);
            QualifiedTopicNameCollection alternatives = manager.AllPossibleQualifiedTopicNames(topicName); 

			foreach (QualifiedTopicName tn in alternatives)
			{
				NamespaceManager namespaceManager = CurrentFederation.NamespaceManagerForTopic(tn);
				if (!namespaceManager.TopicExists(tn.LocalName, ImportPolicy.DoNotIncludeImports))
					continue;
				answer = new DynamicTopic(CurrentFederation, new QualifiedTopicRevision(tn));
				_topics[topic] = answer;
				return answer;
			}
			return null;
		}
예제 #2
0
		public DynamicTopic DynamicTopicFor(string topic)
		{
			if (_Topics == null)
				_Topics = new Hashtable();
			DynamicTopic answer = (DynamicTopic)(_Topics[topic]);
			if (answer != null)
				return answer;

			RelativeTopicName rel = new RelativeTopicName(topic);
			ArrayList alternatives = new ArrayList();
			if (rel.Namespace != null)	// if they left the namespace unspec'd
			{			
				alternatives.Add(new AbsoluteTopicName(topic));	
			}
			else
			{
				alternatives.Add(new AbsoluteTopicName(topic, Name));	// always try this one first
				alternatives.AddRange(rel.AllAbsoluteTopicNamesFor(CurrentFederation.ContentBaseForNamespace(Name)));
			}

			foreach (AbsoluteTopicName tn in alternatives)
			{
				ContentBase cb = CurrentFederation.ContentBaseForTopic(tn);
				if (!cb.TopicExists(tn))
					continue;
				answer = new DynamicTopic(CurrentFederation, tn);
				_Topics[topic] = answer;
				return answer;
			}
			return null;
		}
예제 #3
0
 public TopicScope(IScope ContainingScope, DynamicTopic topic)
 {
     _ContainingScope = ContainingScope;
     _Topic = topic;
 }