View Javadoc

1   /**
2    * This file Copyright (c) 2003-2011 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.module.exchangesimple;
35  
36  import info.magnolia.cms.exchange.Subscriber;
37  import info.magnolia.cms.exchange.Subscription;
38  
39  import java.util.ArrayList;
40  import java.util.Collection;
41  import java.util.Iterator;
42  
43  /**
44   * Bean holder for subscriber configuration.
45   * @author Sameer Charles
46   * $Id$
47   */
48  public class DefaultSubscriber implements Subscriber {
49  
50      private String url;
51  
52      private boolean active;
53  
54      private String name;
55  
56      /**
57       * 600 seconds default.
58       */
59      private int readTimeout = 600000;
60  
61      /**
62       * 10 seconds default.
63       */
64      private int connectTimeout = 10000;
65  
66      Collection subscriptions = new ArrayList();
67  
68      private final String authMethod = "Basic";
69  
70      @Override
71      public String getName() {
72          return this.name;
73      }
74  
75      @Override
76      public void setName(String name) {
77          this.name = name;
78      }
79  
80      @Override
81      public String getURL() {
82          return url;
83      }
84  
85      @Override
86      public void setURL(String url) {
87          this.url = url;
88      }
89  
90      @Override
91      public boolean isActive() {
92          return active;
93      }
94  
95      @Override
96      public void setActive(boolean active) {
97          this.active = active;
98      }
99  
100     @Override
101     public void setSubscriptions(Collection subscriptions) {
102         this.subscriptions = subscriptions;
103     }
104 
105     @Override
106     public Collection getSubscriptions() {
107         return this.subscriptions;
108     }
109 
110     @Override
111     public void addSubscriptions(Subscription subscription) {
112         this.subscriptions.add(subscription);
113     }
114 
115     @Override
116     public Subscription getMatchedSubscription(String path, String repositoryId) {
117         Iterator subscriptions = this.getSubscriptions().iterator();
118         Subscription matchedSubscription = null;
119         int highestVote = -1;
120         while (subscriptions.hasNext()) {
121             Subscription subscription = (Subscription) subscriptions.next();
122             if (repositoryId.equalsIgnoreCase(subscription.getRepository())) {
123                 int vote = subscription.vote(path);
124                 if (highestVote < vote) {
125                     highestVote = vote;
126                     matchedSubscription = subscription;
127                 }
128             }
129         }
130         return matchedSubscription;
131     }
132 
133     @Override
134     public boolean isSubscribed(String path, String repositoryId) {
135         return (null != this.getMatchedSubscription(path, repositoryId));
136     }
137 
138     public String getDocumentBase(String path, String repositoryId) {
139         String documentBase = null;
140         Subscription subscription = this.getMatchedSubscription(path, repositoryId);
141         if (null != subscription) {
142             documentBase = subscription.getToURI();
143             if (null == documentBase) {
144                 // if this property is not present get subscribed URI since the result after
145                 // string replacement will be the same
146                 documentBase = subscription.getFromURI();
147             }
148         }
149         return documentBase;
150     }
151 
152     public String getSubscribedPath(String path, String repositoryId) {
153         Subscription subscription = this.getMatchedSubscription(path, repositoryId);
154         String subscribedPath = null;
155         if (null != subscription) {
156             subscribedPath = subscription.getFromURI();
157         }
158         return subscribedPath;
159     }
160 
161     @Override
162     public int getConnectTimeout() {
163         return connectTimeout;
164     }
165 
166     @Override
167     public int getReadTimeout() {
168         // TODO Auto-generated method stub
169         return readTimeout;
170     }
171 
172     @Override
173     public void setConnectTimeout(int timeoutMillis) {
174         this.connectTimeout = timeoutMillis;
175     }
176 
177     @Override
178     public void setReadTimeout(int timeoutMillis) {
179         this.readTimeout = timeoutMillis;
180     }
181 
182 }