Author: nbelaevski
Date: 2010-10-07 13:42:30 -0400 (Thu, 07 Oct 2010)
New Revision: 19494
Added:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/Message.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageFilter.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageSerializer.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageTransformer.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/PublisherContext.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicKey.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicMode.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueueSettings.java
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueuesContext.java
Log:
Push API draft committed
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/Message.java
(from rev 19481, branches/RF-7817/push-redesign/src/main/java/org/richfaces/Message.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/Message.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/Message.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class Message {
+
+ private final TopicKey topicKey;
+
+ private Map<String, Object> attributes = null;
+
+ private Object data;
+
+ public Message(TopicKey topicKey) {
+ this.topicKey = topicKey;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+ public void addAttribute(String key, Object value) {
+ if (attributes == null) {
+ attributes = new HashMap<String, Object>();
+ }
+
+ attributes.put(key, value);
+ }
+
+ public void removeAttribute(String key) {
+ if (attributes != null) {
+ attributes.remove(key);
+ }
+ }
+
+ public Map<String, Object> getAttributes() {
+ if (attributes == null) {
+ attributes = new HashMap<String, Object>();
+ }
+
+ return attributes;
+ }
+
+ public Object getAttribute(String key) {
+ if (attributes != null) {
+ return attributes.get(key);
+ }
+
+ return null;
+ }
+
+ public boolean hasAttributes() {
+ return attributes != null && !attributes.isEmpty();
+ }
+
+ public TopicKey getTopicKey() {
+ return topicKey;
+ }
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageFilter.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/MessageFilter.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageFilter.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageFilter.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,33 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public interface MessageFilter {
+
+ public boolean accept(Message message);
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageSerializer.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/application/MessageSerializer.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageSerializer.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageSerializer.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+//TODO - byte message serializer?
+public interface MessageSerializer {
+
+ public String serialize(Message message);
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageTransformer.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/application/MessageTransformer.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageTransformer.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/MessageTransformer.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,33 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public interface MessageTransformer {
+
+ public Message transform(Message o);
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/PublisherContext.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/application/PushPublisherContext.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/PublisherContext.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/PublisherContext.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public interface PublisherContext {
+
+ //TODO - return Future?
+ //TODO - use topic key?
+ public void publish(TopicKey topic, Object data);
+
+ //TODO - return Future?
+ //TODO - use topic key?
+ //TODO - priority?
+ public void publish(Message message);
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicKey.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/TopicKey.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicKey.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicKey.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class TopicKey {
+
+ private final String topicName;
+
+ public TopicKey(String topicName) {
+ super();
+
+ if (topicName == null) {
+ throw new NullPointerException();
+ }
+
+ this.topicName = topicName;
+ }
+
+ /**
+ * @return the topicName
+ */
+ public String getTopicName() {
+ return topicName;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((topicName == null) ? 0 : topicName.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ TopicKey other = (TopicKey) obj;
+ if (topicName == null) {
+ if (other.topicName != null) {
+ return false;
+ }
+ } else if (!topicName.equals(other.topicName)) {
+ return false;
+ }
+ return true;
+ }
+
+}
Copied:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicMode.java
(from rev 19481,
branches/RF-7817/push-redesign/src/main/java/org/richfaces/DeliveryMode.java)
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicMode.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicMode.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public enum TopicMode {
+
+ flash, persistent, persistentLast
+
+}
Added:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueueSettings.java
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueueSettings.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueueSettings.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public interface TopicQueueSettings {
+
+ public void addMessageTransformer(MessageTransformer transformer);
+
+ public void removeMessageTransformer(MessageTransformer transformer);
+
+ public void setMessageSerializer(MessageSerializer serializer);
+
+ public MessageSerializer getMessageSerializer();
+
+ public void addMessageFilter(MessageFilter filter);
+
+ public void removeMessageFilter(MessageFilter filter);
+
+ public boolean isSessionAware();
+
+ public void setSessionAware(boolean sessionAware);
+
+ public boolean isFacesContextAware();
+
+ public void setFacesContextAware(boolean facesContextAware);
+
+ public TopicMode getDeliveryMode();
+
+ public void setDeliveryMode(TopicMode mode);
+
+ public int getCapacity();
+
+ public void setCapacity(int capacity);
+
+ //TODO - transport settings?
+
+}
Added:
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueuesContext.java
===================================================================
---
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueuesContext.java
(rev 0)
+++
branches/RF-7817/ui/core/api/src/main/java/org/richfaces/application/push/TopicQueuesContext.java 2010-10-07
17:42:30 UTC (rev 19494)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.application.push;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public interface TopicQueuesContext {
+
+ public TopicQueueSettings getTopicQueueSettings(TopicKey topicKey);
+
+ public TopicQueueSettings getDefaultTopicQueueSettings();
+
+}
+