You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by an...@apache.org on 2011/03/24 05:38:00 UTC

svn commit: r1084844 - in /incubator/ace/trunk: ace-target-devserver/src/main/resources/conf/ ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/

Author: angelos
Date: Thu Mar 24 04:38:00 2011
New Revision: 1084844

URL: http://svn.apache.org/viewvc?rev=1084844&view=rev
Log:
The Vaadin UI can now be configured to point to other ACE servers or other ports.

Added:
    incubator/ace/trunk/ace-target-devserver/src/main/resources/conf/org.apache.ace.webui.vaadin.cfg
Modified:
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinServlet.java

Added: incubator/ace/trunk/ace-target-devserver/src/main/resources/conf/org.apache.ace.webui.vaadin.cfg
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-target-devserver/src/main/resources/conf/org.apache.ace.webui.vaadin.cfg?rev=1084844&view=auto
==============================================================================
--- incubator/ace/trunk/ace-target-devserver/src/main/resources/conf/org.apache.ace.webui.vaadin.cfg (added)
+++ incubator/ace/trunk/ace-target-devserver/src/main/resources/conf/org.apache.ace.webui.vaadin.cfg Thu Mar 24 04:38:00 2011
@@ -0,0 +1,2 @@
+aceHost = http://localhost:8080/
+obrUrl = http://localhost:8080/obr/
\ No newline at end of file

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java?rev=1084844&r1=1084843&r2=1084844&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java Thu Mar 24 04:38:00 2011
@@ -55,6 +55,7 @@ public class Activator extends Dependenc
         manager.add(createComponent()
             .setInterface(HttpServlet.class.getName(), props)
             .setImplementation(VaadinServlet.class)
+            .add(createConfigurationDependency().setPid(VaadinServlet.PID))
         );
         
         // shows off components that are contributed by extensions

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java?rev=1084844&r1=1084843&r2=1084844&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java Thu Mar 24 04:38:00 2011
@@ -33,6 +33,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
@@ -134,9 +135,10 @@ public class VaadinClient extends com.va
     private static String shopRepo = "shop";
     private static String deployRepo = "deployment";
     private static String customerName = "apache";
-    private static String hostName = "http://localhost:8080";
     private static String endpoint = "/repository";
-    private static String obr = "http://localhost:8080/obr/";
+
+    private URL m_aceHost;
+    private URL m_obrUrl;
 
     private volatile DependencyManager m_manager;
     private volatile BundleContext m_context;
@@ -167,12 +169,17 @@ public class VaadinClient extends com.va
     
     private boolean m_dynamicRelations = true;
 	private File m_sessionDir; // private folder for session info
-	private boolean m_dependenciesResolved = false;
+	private final AtomicBoolean m_dependenciesResolved = new AtomicBoolean(false);
 
     // basic session ID generator
     private static long generateSessionID() {
         return SESSION_ID++;
     }
+
+    public VaadinClient(URL aceHost, URL obrUrl) {
+        m_aceHost = aceHost;
+        m_obrUrl = obrUrl;
+    }
     
     public void setupDependencies(Component component) {
         m_sessionID = "" + generateSessionID();
@@ -199,21 +206,12 @@ public class VaadinClient extends com.va
     }
     
     public void start() {
-        synchronized (this) {
-        	m_dependenciesResolved = true;
-        }
-    }
-    
-    public boolean areDependenciesResolved() {
-        synchronized (this) {
-        	return m_dependenciesResolved;
-        }
+        System.out.println("Starting " + m_sessionID);
+        m_dependenciesResolved.set(true);
     }
     
     public void stop() {
-        synchronized (this) {
-        	m_dependenciesResolved = false;
-        }
+        m_dependenciesResolved.set(false);
     }
     
     public void destroyDependencies() {
@@ -224,7 +222,7 @@ public class VaadinClient extends com.va
     
     public void init() {
         setTheme("ace");
-        if (!areDependenciesResolved()) {
+        if (!m_dependenciesResolved.get()) {
         	final Window message = new Window("Apache ACE");
         	setMainWindow(message);
             message.getContent().setSizeFull();
@@ -402,7 +400,7 @@ public class VaadinClient extends com.va
         });
         return addArtifactButton;
     }
-    
+
     public class LoginWindow extends Window {
         private TextField m_name;
         private PasswordField m_password;
@@ -465,10 +463,10 @@ public class VaadinClient extends com.va
             }
             RepositoryAdminLoginContext context = m_admin.createLoginContext(user);
             
-            context.addShopRepository(new URL(hostName + endpoint), customerName, shopRepo, true)
-                .setObrBase(new URL(obr))
-                .addGatewayRepository(new URL(hostName + endpoint), customerName, gatewayRepo, true)
-                .addDeploymentRepository(new URL(hostName + endpoint), customerName, deployRepo, true);
+            context.addShopRepository(new URL(m_aceHost, endpoint), customerName, shopRepo, true)
+                .setObrBase(m_obrUrl)
+                .addGatewayRepository(new URL(m_aceHost, endpoint), customerName, gatewayRepo, true)
+                .addDeploymentRepository(new URL(m_aceHost, endpoint), customerName, deployRepo, true);
             m_admin.login(context);
             m_admin.checkout();
             return true;
@@ -1285,19 +1283,17 @@ public class VaadinClient extends com.va
     }
     
     public void getBundles(Table table) throws Exception {
-        getBundles(table, "http://localhost:8080/obr/");
+        getBundles(table, m_obrUrl);
     }
     
-    public void getBundles(Table table, String obrBaseUrl) throws Exception {
-        URL obrBase = new URL(obrBaseUrl);
-        
+    public void getBundles(Table table, URL obrBaseUrl) throws Exception {
         // retrieve the repository.xml as a stream
         URL url = null;
         try {
-            url = new URL(obrBase, "repository.xml");
+            url = new URL(obrBaseUrl, "repository.xml");
         }
         catch (MalformedURLException e) {
-            m_log.log(LogService.LOG_ERROR, "Error retrieving repository.xml from " + obrBase);
+            m_log.log(LogService.LOG_ERROR, "Error retrieving repository.xml from " + obrBaseUrl);
             throw e;
         }
 
@@ -1349,7 +1345,7 @@ public class VaadinClient extends com.va
         artifactObjects.addAll(m_artifactRepository.getResourceProcessors());
         for (ArtifactObject ao : artifactObjects) {
             String artifactURL = ao.getURL();
-            if (artifactURL.startsWith(obrBase.toExternalForm())) {
+            if (artifactURL.startsWith(obrBaseUrl.toExternalForm())) {
                 // we now know this artifact comes from the OBR we are querying, so we are interested.
                 fromRepository.add(new OBREntry(ao.getName(), ao.getAttribute(BundleHelper.KEY_VERSION), new File(artifactURL).getName()));
             }
@@ -1389,7 +1385,7 @@ public class VaadinClient extends com.va
     }
 
     public ArtifactObject importBundle(OBREntry bundle) throws IOException {
-        return m_artifactRepository.importArtifact(new URL(new URL(obr), bundle.getUri()), false);
+        return m_artifactRepository.importArtifact(new URL(m_obrUrl, bundle.getUri()), false);
     }
     
     public ArtifactObject importBundle(URL artifact) throws IOException {

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinServlet.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinServlet.java?rev=1084844&r1=1084843&r2=1084844&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinServlet.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinServlet.java Thu Mar 24 04:38:00 2011
@@ -23,15 +23,28 @@ import javax.servlet.http.HttpServletReq
 
 import org.apache.ace.client.repository.SessionFactory;
 import org.apache.felix.dm.DependencyManager;
+import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedService;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.UserAdmin;
 
 import com.vaadin.Application;
 import com.vaadin.terminal.gwt.server.AbstractApplicationServlet;
 
-public class VaadinServlet extends AbstractApplicationServlet {
-	private static final long serialVersionUID = 1L;
-	private volatile DependencyManager m_manager;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Dictionary;
+
+public class VaadinServlet extends AbstractApplicationServlet implements ManagedService {
+    private static final long serialVersionUID = 1L;
+    public static final String PID = "org.apache.ace.webui.vaadin";
+    public static final String ACE_HOST = "aceHost";
+    public static final String OBR_URL = "obrUrl";
+
+    private volatile DependencyManager m_manager;
+
+    private volatile URL m_aceHost;
+    private volatile URL m_obrUrl;
     
     @Override
     protected Class<? extends Application> getApplicationClass() {
@@ -40,7 +53,7 @@ public class VaadinServlet extends Abstr
 
     @Override
     protected Application getNewApplication(HttpServletRequest request)	throws ServletException {
-        Application application = new VaadinClient();
+        Application application = new VaadinClient(m_aceHost, m_obrUrl);
         m_manager.add(m_manager.createComponent()
             .setImplementation(application)
             .setCallbacks("setupDependencies", "start", "stop", "destroyDependencies")
@@ -59,4 +72,37 @@ public class VaadinServlet extends Abstr
         );
         return application;
     }
+
+    public void updated(Dictionary dictionary) throws ConfigurationException {
+        System.out.println("There's a config! "+ dictionary);
+        if (dictionary != null) {
+            URL aceHost;
+            try {
+                String aceHostString = (String) dictionary.get(ACE_HOST);
+                if (aceHostString == null) {
+                    throw new ConfigurationException(ACE_HOST, "Missing property");
+                }
+                aceHost = new URL(aceHostString);
+            }
+            catch (MalformedURLException e) {
+                throw new ConfigurationException(ACE_HOST, "Is not a valid URL", e);
+            }
+
+            URL obrUrl;
+            try {
+                String obrUrlString = (String) dictionary.get(OBR_URL);
+                if (obrUrlString == null) {
+                    throw new ConfigurationException(OBR_URL, "Missing property");
+                }
+                obrUrl = new URL(obrUrlString);
+            }
+            catch (MalformedURLException e) {
+                throw new ConfigurationException(OBR_URL, "Is not a valid URL", e);
+            }
+
+            m_aceHost = aceHost;
+            m_obrUrl = obrUrl;
+        }
+    }
+
 }