[ 
https://issues.apache.org/jira/browse/ARTEMIS-793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15572111#comment-15572111
 ] 

ASF GitHub Bot commented on ARTEMIS-793:
----------------------------------------

Github user clebertsuconic commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/839#discussion_r83230546
  
    --- Diff: 
artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/OsgiBroker.java
 ---
    @@ -1,223 +1,252 @@
    -/*
    - * Licensed to the Apache Software Foundation (ASF) under one or more
    - * contributor license agreements. See the NOTICE file distributed with
    - * this work for additional information regarding copyright ownership.
    - * 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.
    - */
    -package org.apache.activemq.artemis.osgi;
    -
    -import java.io.File;
    -import java.lang.management.ManagementFactory;
    -import java.util.ArrayList;
    -import java.util.Dictionary;
    -import java.util.Enumeration;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.Hashtable;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Set;
    -
    -import org.apache.activemq.artemis.api.core.Interceptor;
    -import org.apache.activemq.artemis.api.core.TransportConfiguration;
    -import org.apache.activemq.artemis.core.config.FileDeploymentManager;
    -import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
    -import 
org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
    -import org.apache.activemq.artemis.core.server.ActiveMQComponent;
    -import org.apache.activemq.artemis.core.server.ActiveMQServer;
    -import 
org.apache.activemq.artemis.jms.server.config.impl.FileJMSConfiguration;
    -import 
org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
    -import 
org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
    -import org.osgi.framework.BundleContext;
    -import org.osgi.framework.ServiceRegistration;
    -import org.osgi.service.component.ComponentContext;
    -import org.osgi.service.component.annotations.Activate;
    -import org.osgi.service.component.annotations.Component;
    -import org.osgi.service.component.annotations.ConfigurationPolicy;
    -import org.osgi.service.component.annotations.Deactivate;
    -import org.osgi.util.tracker.ServiceTracker;
    -
    -@SuppressWarnings({"unchecked", "rawtypes"})
    -@Component(configurationPid = "org.apache.activemq.artemis", 
configurationPolicy = ConfigurationPolicy.REQUIRE)
    -public class OsgiBroker {
    -
    -   private String name;
    -   private String configurationUrl;
    -   private String rolePrincipalClass;
    -   private Map<String, ActiveMQComponent> components;
    -   private Map<String, ServiceRegistration<?>> registrations;
    -   private ServiceTracker tracker;
    -
    -   @Activate
    -   public void activate(ComponentContext cctx) throws Exception {
    -      final BundleContext context = cctx.getBundleContext();
    -      final Dictionary<String, Object> properties = cctx.getProperties();
    -      configurationUrl = getMandatory(properties, "config");
    -      name = getMandatory(properties, "name");
    -      rolePrincipalClass = (String) properties.get("rolePrincipalClass");
    -      String domain = getMandatory(properties, "domain");
    -      ActiveMQJAASSecurityManager security = new 
ActiveMQJAASSecurityManager(domain);
    -      if (rolePrincipalClass != null) {
    -         security.setRolePrincipalClass(rolePrincipalClass);
    -      }
    -      String brokerInstance = null;
    -      String karafDataDir = System.getProperty("karaf.data");
    -      if (karafDataDir != null) {
    -         brokerInstance = karafDataDir + "/artemis/" + name;
    -      }
    -
    -      // todo if we start to pullout more configs from the main config 
then we
    -      // should pull out the configuration objects from factories if 
available
    -      FileConfiguration configuration = new FileConfiguration();
    -      if (brokerInstance != null) {
    -         configuration.setBrokerInstance(new File(brokerInstance));
    -      }
    -      FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration();
    -
    -      FileDeploymentManager fileDeploymentManager = new 
FileDeploymentManager(configurationUrl);
    -      
fileDeploymentManager.addDeployable(configuration).addDeployable(jmsConfiguration).readConfiguration();
    -
    -      components = fileDeploymentManager.buildService(security, 
ManagementFactory.getPlatformMBeanServer());
    -
    -      final ActiveMQServer server = (ActiveMQServer) 
components.get("core");
    -
    -      String[] requiredProtocols = 
getRequiredProtocols(server.getConfiguration().getAcceptorConfigurations());
    -      ProtocolTrackerCallBack callback = new ProtocolTrackerCallBack() {
    -
    -         @Override
    -         public void addFactory(ProtocolManagerFactory<Interceptor> pmf) {
    -            server.addProtocolManagerFactory(pmf);
    -         }
    -
    -         @Override
    -         public void removeFactory(ProtocolManagerFactory<Interceptor> 
pmf) {
    -            server.removeProtocolManagerFactory(pmf);
    -         }
    -
    -         @Override
    -         public void stop() throws Exception {
    -            ActiveMQComponent[] mqComponents = new 
ActiveMQComponent[components.size()];
    -            components.values().toArray(mqComponents);
    -            for (int i = mqComponents.length - 1; i >= 0; i--) {
    -               mqComponents[i].stop();
    -            }
    -            unregister();
    -         }
    -
    -         @Override
    -         public void start() throws Exception {
    -            List<ActiveMQComponent> componentsByStartOrder = 
getComponentsByStartOrder(components);
    -            for (ActiveMQComponent component : componentsByStartOrder) {
    -               component.start();
    -            }
    -            register(context, properties);
    -         }
    -
    -         @Override
    -         public boolean isStarted() {
    -            return server.isStarted();
    -         }
    -      };
    -      ProtocolTracker trackerCust = new ProtocolTracker(name, context, 
requiredProtocols, callback);
    -      tracker = new ServiceTracker(context, ProtocolManagerFactory.class, 
trackerCust);
    -      tracker.open();
    -   }
    -
    -   private String getMandatory(Dictionary<String, ?> properties, String 
key) {
    -      String value = (String) properties.get(key);
    -      if (value == null) {
    -         throw new IllegalStateException("Property " + key + " must be 
set");
    -      }
    -      return value;
    -   }
    -
    -   private String[] getRequiredProtocols(Set<TransportConfiguration> 
acceptors) {
    -      ArrayList<String> protocols = new ArrayList<>();
    -      for (TransportConfiguration acceptor : acceptors) {
    -         Object protocolsFromAcceptor = 
acceptor.getParams().get(TransportConstants.PROTOCOLS_PROP_NAME);
    -         if (protocolsFromAcceptor != null) {
    -            String[] protocolsSplit = 
protocolsFromAcceptor.toString().split(",");
    -            for (String protocol : protocolsSplit) {
    -               if (!protocols.contains(protocol)) {
    -                  protocols.add(protocol);
    -               }
    -            }
    -         }
    -      }
    -      return protocols.toArray(new String[protocols.size()]);
    -   }
    -
    -   @Deactivate
    -   public void stop() throws Exception {
    -      tracker.close();
    -   }
    -
    -   public Map<String, ActiveMQComponent> getComponents() {
    -      return components;
    -   }
    -
    -   /*
    -    * this makes sure the components are started in the correct order. Its
    -    * simple at the mo as e only have core and jms but will need 
impproving if
    -    * we get more.
    -    */
    -   public ArrayList<ActiveMQComponent> 
getComponentsByStartOrder(Map<String, ActiveMQComponent> components) {
    -      ArrayList<ActiveMQComponent> activeMQComponents = new ArrayList<>();
    -      ActiveMQComponent jmsComponent = components.get("jms");
    -      if (jmsComponent != null) {
    -         activeMQComponents.add(jmsComponent);
    -      }
    -      activeMQComponents.add(components.get("core"));
    -      return activeMQComponents;
    -   }
    -
    -   public void register(BundleContext context, Dictionary<String, ?> 
properties) {
    -      registrations = new HashMap<>();
    -      for (Map.Entry<String, ActiveMQComponent> component : 
getComponents().entrySet()) {
    -         String[] classes = getInterfaces(component.getValue());
    -         Hashtable<String, Object> props = new Hashtable<>();
    -         for (Enumeration<String> keyEnum = properties.keys(); 
keyEnum.hasMoreElements(); ) {
    -            String key = keyEnum.nextElement();
    -            Object val = properties.get(key);
    -            props.put(key, val);
    -         }
    -         ServiceRegistration<?> registration = 
context.registerService(classes, component.getValue(), props);
    -         registrations.put(component.getKey(), registration);
    -      }
    -   }
    -
    -   private String[] getInterfaces(ActiveMQComponent value) {
    -      Set<String> interfaces = new HashSet<>();
    -      getInterfaces(value.getClass(), interfaces);
    -      return interfaces.toArray(new String[interfaces.size()]);
    -   }
    -
    -   private void getInterfaces(Class<?> clazz, Set<String> interfaces) {
    -      for (Class<?> itf : clazz.getInterfaces()) {
    -         if (interfaces.add(itf.getName())) {
    -            getInterfaces(itf, interfaces);
    -         }
    -      }
    -      if (clazz.getSuperclass() != null) {
    -         getInterfaces(clazz.getSuperclass(), interfaces);
    -      }
    -   }
    -
    -   public void unregister() {
    -      if (registrations != null) {
    -         for (ServiceRegistration<?> reg : registrations.values()) {
    -            reg.unregister();
    -         }
    -      }
    -   }
    -}
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements. See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * 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.
    + */
    +package org.apache.activemq.artemis.osgi;
    +
    --- End diff --
    
    You are mixing reformat changes here. It's hard to know what you changed.
    
    
    Can you isolate only what was changed and make this a simple patch?
    
    
    
    you can then:
    
    ```sh
    git commit -a --amend
    git push origin -f
    ```


> Improvement to OSGi integration 
> --------------------------------
>
>                 Key: ARTEMIS-793
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-793
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Broker, osgi
>            Reporter: Benjamin Graf
>             Fix For: 1.5.0
>
>
> ARTEMIS-714 adds ability to configure external DataSource for usage instead 
> of hardcoded driver. This feature should also  be usable in OSGi environments 
> like Karaf.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to