Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.ow2.chameleon.fuchsia.importer.push;
  
  /*
   * #%L
   * OW2 Chameleon - Fuchsia Importer for PuSH (PUbSbHubbub)
   * %%
   * Copyright (C) 2009 - 2014 OW2 Chameleon
   * %%
   * Licensed 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.
  * #L%
  */
 
 
 import java.net.URI;
 import java.util.List;
 import java.util.Map;
 
 import static org.ow2.chameleon.fuchsia.importer.push.Constants.*;
 
 public class SubscriptionImporter extends AbstractImporterComponent implements SubscriberOutput {
 
     private static final Logger LOG = LoggerFactory.getLogger(SubscriptionImporter.class);
 
     public static final String PUBSUBHUBBUB_USER_AGENT = "RSS pubsubhubbub 0.3";
 
     private static List<StringAPPROVED_ACTIONS = new Vector<String>();
 
     private List<StringcallbacksRegistered = new ArrayList<String>();
 
 
     @ServiceProperty(name = "target", value = "(push.hub.url=*)")
     private String filter;
 
     @Requires
 
     @Requires
 
 
     public void registration(ServiceReference serviceReference) {
         super.setServiceReference(serviceReference);
     }
 
     @Validate
     public void start() {
         .info("PuSH importer started.");
         super.start();
     }
 
     @Invalidate
     public void stop() {
         .info("PuSH importer stopped.");
         super.stop();
     }
 
     public String getName() {
         return this.getClass().getSimpleName();
     }
    public int subscribe(String hubString topicUrlString hostnameString verifyTokenString leaseSecondsthrows SubscriptionException {
        if (topicUrl != null) {
            UrlEncodedFormEntity entity = buildUrlEncodedFormEntity(hostnametopicUrlverifyToken"subscribe");
            HttpPost httppost = new HttpPost(hub);
            addAction("subscribe"topicUrlverifyToken);
            httppost.setEntity(entity);
            httppost.setHeader(.);
            return executeRequest(httppost"subscription");
        }
        return .;
    }
    public int unsubscribe(String hubString topicUrlString hostnameString verifyTokenthrows SubscriptionException {
        if (topicUrl != null) {
            UrlEncodedFormEntity entity = buildUrlEncodedFormEntity(hostnametopicUrlverifyToken"unsubscribe");
            HttpPost httppost = new HttpPost(hub);
            addAction("unsubscribe"topicUrlverifyToken);
            httppost.setEntity(entity);
            httppost.setHeader(.);
            return executeRequest(httppost"unsubscription");
        }
        return .;
    }
    private int executeRequest(HttpPost httppostString actionthrows SubscriptionException {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpResponse response;
        try {
            response = httpclient.execute(httppost);
        } catch (IOException e) {
            throw new SubscriptionException("IOException during stop of " + actione);
        }
        if (response != null) {
            return response.getStatusLine().getStatusCode();
        } else {
            return .;
        }
    }
    private UrlEncodedFormEntity buildUrlEncodedFormEntity(String callbackserverurlString topicUrlString verifyTokenString modethrows SubscriptionException {
        List<NameValuePairnvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair(callbackserverurl));
        nvps.add(new BasicNameValuePair(mode));
        nvps.add(new BasicNameValuePair(topicUrl));
        nvps.add(new BasicNameValuePair("sync"));
        //For future https implementation
        //if ((secret !=null) && (secret.getBytes("utf8").length < 200))
        //nvps.add(new BasicNameValuePair("hub.hub.secret", secret));
        if (verifyToken != null) {
            nvps.add(new BasicNameValuePair(verifyToken));
        }
        try {
            return new UrlEncodedFormEntity(nvps);
        } catch (UnsupportedEncodingException e) {
            throw new SubscriptionException("UnsupportedEncodingException thrown while stopping subscription"e);
        }
    }
    private void addAction(String hubmodeString hubtopicString hubverify) {
        String action = hubmode + ":" + hubtopic + ":" + hubverify;
        .add(action);
    }
    public List<StringgetApprovedActions() {
        return ;
    }
    @Override
    protected void useImportDeclaration(ImportDeclaration importDeclarationthrows BinderException {
        .info("adding import declaration {}"importDeclaration);
        try {
            Map<StringObjectdata = importDeclaration.getMetadata();
            String hub = data.get("push.hub.url").toString();
            String hubTopic = data.get("push.hub.topic").toString();
            String callback = data.get("push.subscriber.callback").toString();
            URI callbackURI = new URI(callback);
            .registerServlet(callbackURI.getPath(), new CallbackServlet(importDeclarationthis), nullnull);
            int statusCode = subscribe(hubhubTopiccallbacknullnull);
            if (statusCode == .) {
                .info("the status code of the subscription is 204: the request was verified and that the subscription is active");
            } else if (statusCode == .) {
                .info("the status code of the subscription is 202: the subscription has yet to be verified (asynchronous verification)");
            } else {
                .info("the status code of the subscription is {}"statusCode);
            }
            .add(callback);
            super.handleImportDeclaration(importDeclaration);
        } catch (Exception e) {
            .error("failed to import declaration, with the message: " + e.getMessage(), e);
        }
    }
    @Override
    protected void denyImportDeclaration(ImportDeclaration importDeclarationthrows BinderException {
        .info("removing import declaration {}"importDeclaration);
        Map<StringObjectdata = importDeclaration.getMetadata();
        String hub = data.get("push.hub.url").toString();//"http://localhost:8080/subscribe";
        String hubTopic = data.get("push.hub.topic").toString();//"http://blogname.blogspot.com/feeds/posts/default";
        String targetCallback = data.get("push.subscriber.callback").toString();
        super.unhandleImportDeclaration(importDeclaration);
        for (String callback : ) {
            if (callback.equals(targetCallback)) {
                .info("Removing callback {}"callback);
                .unregister(callback);
                try {
                    unsubscribe(hubhubTopictargetCallbacknull);
                    .info("Callback {} removed from the subscriber"callback);
                } catch (SubscriptionException e) {
                    .error("Callback " + callback + " failed to be removed from the subscriber with the message"e);
                }
                break;
            }
        }
    }
New to GrepCode? Check out our FAQ X