Skip to content

Commit

Permalink
Add License and Software types to keep track of external dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
Emil Forslund committed Feb 5, 2016
1 parent 702874e commit 00cd553
Show file tree
Hide file tree
Showing 41 changed files with 1,008 additions and 446 deletions.
6 changes: 0 additions & 6 deletions src/main/java/com/speedment/Speedment.java
Expand Up @@ -28,7 +28,6 @@
import com.speedment.component.LoggerFactoryComponent;
import com.speedment.component.ManagerComponent;
import com.speedment.component.PasswordComponent;
import com.speedment.component.PluginComponent;
import com.speedment.component.PrimaryKeyFactoryComponent;
import com.speedment.component.ProjectComponent;
import com.speedment.component.SqlTypeMapperComponent;
Expand Down Expand Up @@ -73,7 +72,6 @@ public interface Speedment {
* <li>{@link com.speedment.component.StreamSupplierComponent StreamSupplierComponent}</li>
* <li>{@link com.speedment.component.TypeMapperComponent TypeMapperComponent}</li>
* <li>{@link com.speedment.component.PasswordComponent PasswordComponent}</li>
* <li>{@link com.speedment.component.PluginComponent PluginComponent}</li>
* <li>{@link com.speedment.component.UserInterfaceComponent UserInterfaceComponent}</li>
*
* </ul>
Expand Down Expand Up @@ -178,10 +176,6 @@ default TypeMapperComponent getTypeMapperComponent() {
return get(TypeMapperComponent.class);
}

default PluginComponent getPluginComponent() {
return get(PluginComponent.class);
}

default EventComponent getEventComponent() {
return get(EventComponent.class);
}
Expand Down
Expand Up @@ -28,7 +28,7 @@
import com.speedment.internal.codegen.lang.models.ClassOrInterface;
import java.util.stream.Stream;
import com.speedment.internal.util.JavaLanguageNamer;
import java.util.Map.Entry;
import com.speedment.stream.MapStream;
import java.util.Set;
import java.util.function.Supplier;

Expand Down Expand Up @@ -203,5 +203,5 @@ default Class<CodeGenerationComponent> getComponentClass() {

void setJavaLanguageNamerSupplier(Supplier<? extends JavaLanguageNamer> supplier);

Stream<Entry<Class<? extends HasMainInterface>, Set<String>>> stream();
MapStream<Class<? extends HasMainInterface>, Set<String>> stream();
}
33 changes: 19 additions & 14 deletions src/main/java/com/speedment/component/Component.java
Expand Up @@ -16,43 +16,48 @@
*/
package com.speedment.component;

import com.speedment.License;
import com.speedment.Speedment;
import com.speedment.annotation.Api;
import com.speedment.internal.core.runtime.Lifecyclable;
import com.speedment.license.Software;

/**
* A Component represents the basic functionality for a Speedment Platform
* Component.
*
* @author pemi
* @since 2.0
* @author Per Minborg
* @author Emil Forslund
* @since 2.0
*/
@Api(version = "2.2")
@Api(version = "2.3")
public interface Component extends Lifecyclable<Component> {

/**
* Returns the Component interface Class this Component implements.
*
* @return the Component interface Class this Component implements
* @return the interface class
*/
Class<? extends Component> getComponentClass();

/**
* Returns the Speedment platform.
*
* @return the Returns the Speedment platform
* @return the Speedment platform
*/
Speedment getSpeedment();

/**
* Returns the license for this Components.
* Returns informaion about this components title, version, license and any
* dependencies on third-party software that it may have.
*
* @return the license for this Components
* @return the software information of this component
*/
License getLicense();

String getTitle();

String getVersion();
}
Software asSoftware();

/**
* Returns if this componenet is part of core Speedment or not.
*
* @return {@code true} if this is an internal component
*/
boolean isInternal();
}
60 changes: 0 additions & 60 deletions src/main/java/com/speedment/component/PluginComponent.java

This file was deleted.

6 changes: 6 additions & 0 deletions src/main/java/com/speedment/config/db/mapper/TypeMapper.java
Expand Up @@ -17,6 +17,8 @@
package com.speedment.config.db.mapper;

import com.speedment.annotation.Api;
import java.util.Comparator;
import static java.util.Comparator.comparing;

/**
*
Expand All @@ -27,6 +29,10 @@
*/
@Api(version = "2.2")
public interface TypeMapper<DB_TYPE, JAVA_TYPE> {

final Comparator<TypeMapper<?, ?>> COMPARATOR =
comparing(TypeMapper<?, ?>::getDatabaseType, comparing(Class<?>::getSimpleName))
.thenComparing(TypeMapper::getLabel);

/**
* Returns the label for this mapper that should appear to the end user.
Expand Down
Expand Up @@ -22,6 +22,8 @@
import com.speedment.db.DbmsHandler;
import com.speedment.internal.core.manager.sql.SpeedmentPredicateView;
import com.speedment.internal.util.sql.SqlTypeInfo;
import static com.speedment.stream.MapStream.comparing;
import java.util.Comparator;

import java.util.Optional;
import java.util.Set;
Expand All @@ -38,6 +40,8 @@
*/
@Api(version = "2.2")
public interface DbmsType {

final Comparator<DbmsType> COMPARATOR = comparing(DbmsType::getName);

/**
* Returns the non-null name for this {@code DbmsType}. For example MySQL or
Expand Down

This file was deleted.

Expand Up @@ -33,15 +33,15 @@ public abstract class AbstractComponent implements Component {
public AbstractComponent(Speedment speedment) {
this.speedment = requireNonNull(speedment);
}

@Override
public Speedment getSpeedment() {
return speedment;
public boolean isInternal() {
return false;
}

@Override
public String getTitle() {
return getClass().getSimpleName();
public Speedment getSpeedment() {
return speedment;
}

@Override
Expand Down Expand Up @@ -72,5 +72,4 @@ public AbstractComponent stop() {
public Lifecyclable.State getState() {
return state;
}

}
}

This file was deleted.

Expand Up @@ -43,13 +43,14 @@
import java.util.function.Predicate;
import java.util.stream.Stream;
import com.speedment.internal.util.JavaLanguageNamer;
import com.speedment.license.Software;
import java.util.List;
import static java.util.Objects.requireNonNull;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Supplier;
import static java.util.Objects.requireNonNull;

public final class CodeGenerationComponentImpl extends Apache2AbstractComponent implements CodeGenerationComponent {
public final class CodeGenerationComponentImpl extends InternalOpenSourceComponent implements CodeGenerationComponent {

private Generator generator;
private final Map<Class<? extends HasMainInterface>, Map<String, TranslatorSettings<?, ?>>> map;
Expand Down Expand Up @@ -151,21 +152,21 @@ TranslatorSettings<DOC, T> aquireTranslatorSettings(Class<DOC> docType, Class<T>
public <DOC extends HasName & HasMainInterface, T extends ClassOrInterface<T>>
Translator<DOC, T> findTranslator(DOC document, Class<T> modelType, String key) {
return translators(document, key::equals)
.findAny()
.map(translator -> (Translator<DOC, T>) translator)
.orElseThrow(noTranslatorFound(document, key));
.findAny()
.map(translator -> (Translator<DOC, T>) translator)
.orElseThrow(noTranslatorFound(document, key));
}

@SuppressWarnings("unchecked")
private <DOC extends HasName & HasMainInterface>
Stream<? extends Translator<DOC, ?>> translators(DOC document, Predicate<String> nameFilter) {

return MapStream.of(map)
.filterKey(c -> c.isInstance(document))
.values()
.flatMap(m -> MapStream.of(m).filterKey(nameFilter).values())
.map(s -> (TranslatorSettings<DOC, ?>) s)
.map(settings -> settings.createDecorated(getSpeedment(), generator, document));
.filterKey(c -> c.isInstance(document))
.values()
.flatMap(m -> MapStream.of(m).filterKey(nameFilter).values())
.map(s -> (TranslatorSettings<DOC, ?>) s)
.map(settings -> settings.createDecorated(getSpeedment(), generator, document));
}

@Override
Expand All @@ -179,17 +180,21 @@ public void setJavaLanguageNamerSupplier(Supplier<? extends JavaLanguageNamer> s
}

@Override
public Stream<Map.Entry<Class<? extends HasMainInterface>, Set<String>>> stream() {
public MapStream<Class<? extends HasMainInterface>, Set<String>> stream() {
return MapStream.of(map)
.mapValue(Map::keySet)
.toMap().entrySet().stream();
.mapValue(Map::keySet);
}

@Override
public Stream<Software> getDependencies() {
return Stream.empty();
}

private static Supplier<SpeedmentException> noTranslatorFound(HasMainInterface doc, String key) {
return () -> new SpeedmentException(
"Found no translator with key '"
+ key + "' for document '"
+ doc.mainInterface().getSimpleName() + "'."
"Found no translator with key '"
+ key + "' for document '"
+ doc.mainInterface().getSimpleName() + "'."
);
}
}

0 comments on commit 00cd553

Please sign in to comment.