Skip to content

Commit

Permalink
First green bar, not currently doing any graph management
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Jul 2, 2013
1 parent 8fcb97b commit 2091939
Show file tree
Hide file tree
Showing 13 changed files with 95 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ public interface Addon

/**
* Return the {@link Future} representing the boot-up sequence for this {@link Addon} instance. Returns
* <code>null</code> if the {@link Addon} is not starting, {@link AddonStatus#isStarted()} or {@link AddonStatus#isFailed()}
* <code>null</code> if the {@link Addon} is not starting, {@link AddonStatus#isStarted()} or
* {@link AddonStatus#isFailed()}
*/
public Future<Void> getFuture();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import org.jboss.forge.furnace.addons.AddonLifecycleManager;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.addons.AddonView;
import org.jboss.forge.furnace.impl.AddonLifecycleManager;
import org.jboss.forge.furnace.impl.AddonRegistryImpl;
import org.jboss.forge.furnace.impl.AddonRepositoryImpl;
import org.jboss.forge.furnace.impl.ImmutableAddonRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package org.jboss.forge.furnace.addons;

import org.jboss.forge.furnace.addons.Addon;
import org.jboss.forge.furnace.addons.AddonDependency;
import org.jboss.forge.furnace.lock.LockManager;
import org.jboss.forge.furnace.util.Assert;
import org.jboss.forge.furnace.versions.Version;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.furnace.impl;
package org.jboss.forge.furnace.addons;

import java.util.Collections;
import java.util.Set;
Expand Down Expand Up @@ -88,11 +88,6 @@ public Set<AddonDependency> getDependencies()
return Collections.unmodifiableSet(state.dependencies);
}

public Set<AddonDependency> getMutableDependencies()
{
return state.dependencies;
}

public void setDependencies(Set<AddonDependency> dependencies)
{
Assert.notNull(dependencies, "Dependencies must not be null.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.furnace.impl;
package org.jboss.forge.furnace.addons;

import java.util.Collections;
import java.util.HashSet;
Expand All @@ -24,8 +24,6 @@
import org.jboss.forge.furnace.addons.AddonFilter;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonView;
import org.jboss.forge.furnace.addons.StartEnabledAddonCallable;
import org.jboss.forge.furnace.addons.StopAddonCallable;
import org.jboss.forge.furnace.impl.graph.CompleteAddonGraph;
import org.jboss.forge.furnace.impl.graph.OptimizedAddonGraph;
import org.jboss.forge.furnace.lock.LockManager;
Expand Down Expand Up @@ -270,7 +268,7 @@ public boolean accept(Addon addon)
});

AddonId result = null;
if (addons.isEmpty())
if (!addons.isEmpty())
{
for (Addon addon : addons)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
package org.jboss.forge.furnace.impl;
package org.jboss.forge.furnace.addons;

import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.addons.Addon;
import org.jboss.forge.furnace.addons.AddonDependency;
import org.jboss.forge.furnace.addons.AddonDependencyImpl;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonView;
import org.jboss.forge.furnace.lock.LockManager;
import org.jboss.forge.furnace.modules.AddonModuleLoader;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
Expand Down Expand Up @@ -58,11 +53,6 @@ public AddonImpl loadAddon(AddonView view, AddonId addonId)
}
}

if (addon == null)
{
addon = new AddonImpl(lock, addonId);
}

return addon;
}

Expand All @@ -82,29 +72,22 @@ private AddonImpl loadAddonFromRepository(AddonView view, AddonRepository reposi

Set<AddonDependency> dependencies = fromAddonDependencyEntries(view, addon,
repository.getAddonDependencies(addonId));
addon.setDependencies(dependencies);

if (addon.getModule() == null)
{
Set<AddonDependency> missingRequiredDependencies = new HashSet<AddonDependency>();
for (AddonDependency dependency : addon.getDependencies())
for (AddonDependency addonDependency : dependencies)
{
AddonId dependencyId = dependency.getDependency().getId();

boolean loaded = false;
for (Addon a : view.getAddons())
{
if (a.getId().equals(dependencyId) && !a.getStatus().isMissing())
{
loaded = true;
}
}
if (!loaded && !dependency.isOptional())
Addon dependency = addonDependency.getDependency();
if (dependency == null && !addonDependency.isOptional())
{
missingRequiredDependencies.add(dependency);
missingRequiredDependencies.add(addonDependency);
}
}

if (missingRequiredDependencies.isEmpty())
addon.setMissingDependencies(missingRequiredDependencies);

if (!missingRequiredDependencies.isEmpty())
{
if (addon.getMissingDependencies().size() != missingRequiredDependencies.size())
Expand All @@ -128,10 +111,12 @@ private AddonImpl loadAddonFromRepository(AddonView view, AddonRepository reposi
catch (Exception e)
{
logger.log(Level.FINE, "Failed to load addon [" + addonId + "]", e);
// throw new ContainerException("Failed to load addon [" + addonId + "]", e);
}
}
}

dependencies.removeAll(addon.getMissingDependencies());
addon.setDependencies(dependencies);
}
return addon;
}
Expand All @@ -145,7 +130,10 @@ private Set<AddonDependency> fromAddonDependencyEntries(AddonView view, AddonImp
AddonId dependencyId = manager.resolve(view, entry.getName());
if (dependencyId == null)
{

if (!entry.isOptional())
{
result.add(new MissingAddonDependencyImpl(entry));
}
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.furnace.impl;
package org.jboss.forge.furnace.addons;

import java.util.concurrent.Callable;
import java.util.logging.Level;
Expand All @@ -18,6 +18,14 @@
import org.jboss.forge.furnace.addons.AddonDependency;
import org.jboss.forge.furnace.event.PostStartup;
import org.jboss.forge.furnace.event.PreShutdown;
import org.jboss.forge.furnace.impl.AddonProducer;
import org.jboss.forge.furnace.impl.AddonRegistryProducer;
import org.jboss.forge.furnace.impl.AddonRepositoryProducer;
import org.jboss.forge.furnace.impl.ContainerServiceExtension;
import org.jboss.forge.furnace.impl.FurnaceProducer;
import org.jboss.forge.furnace.impl.NullServiceRegistry;
import org.jboss.forge.furnace.impl.ServiceRegistryImpl;
import org.jboss.forge.furnace.impl.ServiceRegistryProducer;
import org.jboss.forge.furnace.lock.LockMode;
import org.jboss.forge.furnace.modules.AddonResourceLoader;
import org.jboss.forge.furnace.modules.ModularURLScanner;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.jboss.forge.furnace.addons;

import org.jboss.forge.furnace.addons.Addon;
import org.jboss.forge.furnace.addons.AddonDependency;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.furnace.versions.Version;

public class MissingAddonDependencyImpl implements AddonDependency
{

private AddonDependencyEntry entry;

public MissingAddonDependencyImpl(AddonDependencyEntry entry)
{
this.entry = entry;
}

@Override
public Addon getDependent()
{
return null;
}

@Override
public Addon getDependency()
{
return null;
}

@Override
public Version getDependencyVersion()
{
return null;
}

@Override
public boolean isExported()
{
return entry.isExported();
}

@Override
public boolean isOptional()
{
return entry.isOptional();
}

public String getMissingAddonName()
{
return entry.getName();
}

@Override
public String toString()
{
return "MissingAddonDependencyImpl [entry=" + entry + "]";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
import java.util.concurrent.atomic.AtomicInteger;

import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.impl.AddonImpl;
import org.jboss.forge.furnace.impl.AddonRunnable;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import org.jboss.forge.furnace.impl.AddonImpl;
import org.jboss.forge.furnace.impl.AddonRunnable;
import org.jboss.forge.furnace.addons.Addon;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.jboss.forge.furnace.addons.Addon;
import org.jboss.forge.furnace.addons.AddonFilter;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonLifecycleManager;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.addons.AddonStatus;
import org.jboss.forge.furnace.lock.LockManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import javax.enterprise.inject.spi.BeanManager;

import org.jboss.forge.furnace.addons.Addon;
import org.jboss.forge.furnace.addons.AddonImpl;
import org.jboss.forge.furnace.lock.LockManager;
import org.jboss.forge.furnace.lock.LockMode;
import org.jboss.forge.furnace.services.ExportedInstance;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonLifecycleManager;
import org.jboss.forge.furnace.addons.AddonView;
import org.jboss.forge.furnace.exception.ContainerException;
import org.jboss.forge.furnace.impl.AddonLifecycleManager;
import org.jboss.forge.furnace.impl.AddonRepositoryImpl;
import org.jboss.forge.furnace.modules.providers.FurnaceContainerSpec;
import org.jboss.forge.furnace.modules.providers.JGraphTClasspathSpec;
Expand Down

0 comments on commit 2091939

Please sign in to comment.