blob: eb5f3a38aff5cad094c4a763595f7d1d5a5cb2e5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.abdera2.activities.protocol.managed;
import java.util.Map;
import java.util.Properties;
import org.apache.abdera2.common.protocol.CollectionInfo;
import org.apache.abdera2.common.protocol.RequestContext;
public class FeedConfiguration extends Configuration implements CollectionInfo {
public static final String PROP_NAME_ADAPTER_CLASS = "adapterClassName";
public static final String PROP_SUB_URI_NAME = "subUri";
public static final String PROP_AUTHOR_NAME = "author";
public static final String PROP_TITLE_NAME = "title";
public static final String PROP_ACCEPTS = "accepts";
public static final String PROP_ENTRY_TITLE_NAME = "entryTitle";
public static final String PROP_FEED_CONFIG_LOCATION_NAME = "configFile";
public static final String ENTRY_ELEM_NAME_ID = "id";
public static final String ENTRY_ELEM_NAME_TITLE = "title";
public static final String ENTRY_ELEM_NAME_CONTENT = "content";
public static final String ENTRY_ELEM_NAME_AUTHOR = "author";
public static final String ENTRY_ELEM_NAME_UPDATED = "updated";
public static final String ENTRY_ELEM_NAME_LINK = "link";
private final String feedId;
private final String subUri;
private final String adapterClassName;
private final String feedConfigLocation;
private final ServerConfiguration serverConfiguration;
private String feedTitle = "unknown";
private String feedAuthor = "unknown";
private Map<Object, Object> optionalProperties;
private final CollectionAdapterConfiguration adapterConfiguration;
public FeedConfiguration(String feedId,
String subUri,
String adapterClassName,
String feedConfigLocation,
ServerConfiguration serverConfiguration) {
this.feedId = feedId;
this.subUri = subUri;
this.adapterClassName = adapterClassName;
this.feedConfigLocation = feedConfigLocation;
this.adapterConfiguration = new CollectionAdapterConfiguration(serverConfiguration, feedConfigLocation);
this.serverConfiguration = serverConfiguration;
}
public static FeedConfiguration getFeedConfiguration(String feedId,
Properties properties,
ServerConfiguration serverConfiguration) {
FeedConfiguration feedConfiguration =
new FeedConfiguration(feedId, Configuration.getProperty(properties, PROP_SUB_URI_NAME), Configuration
.getProperty(properties, PROP_NAME_ADAPTER_CLASS), Configuration
.getProperty(properties, PROP_FEED_CONFIG_LOCATION_NAME), serverConfiguration);
if (properties.containsKey(PROP_AUTHOR_NAME)) {
feedConfiguration.setFeedAuthor(Configuration.getProperty(properties, PROP_AUTHOR_NAME));
}
if (properties.containsKey(PROP_TITLE_NAME)) {
feedConfiguration.setFeedTitle(Configuration.getProperty(properties, PROP_TITLE_NAME));
}
feedConfiguration.optionalProperties = properties;
return feedConfiguration;
}
public String getAdapterClassName() {
return adapterClassName;
}
public String getFeedAuthor() {
return feedAuthor;
}
public String getFeedConfigLocation() {
return feedConfigLocation;
}
public String getFeedId() {
return feedId;
}
public String getFeedTitle() {
return feedTitle;
}
public String getSubUri() {
return subUri;
}
public void setFeedAuthor(String feedAuthor) {
this.feedAuthor = feedAuthor;
}
public void setFeedTitle(String feedTitle) {
this.feedTitle = feedTitle;
}
public String getFeedUri() {
return serverConfiguration.getServerUri() + "/" + getSubUri();
}
public boolean hasProperty(String key) {
return optionalProperties.containsKey(key);
}
public Object getProperty(String key) {
return optionalProperties.get(key);
}
public CollectionAdapterConfiguration getAdapterConfiguration() {
return adapterConfiguration;
}
public String[] getAccepts(RequestContext request) {
Object accepts = optionalProperties.get(PROP_ACCEPTS);
if (accepts == null || !(accepts instanceof String))
return new String[] {"application/json"};
return ((String)accepts).split("\\s*,\\s*");
}
public String getHref(RequestContext request) {
return getFeedUri();
}
public String getTitle(RequestContext request) {
return getFeedTitle();
}
public ServerConfiguration getServerConfiguration() {
return adapterConfiguration.getServerConfiguration();
}
}