Vitor de Lima has uploaded a new change for review. Change subject: core, engine: Architecture dependent commands ......................................................................
core, engine: Architecture dependent commands This patch introduces a basic set of classes to isolate part of the code that must behave differently on each supported CPU architecture. The change #18622 has an example of how it can be used to keep architecture dependent code maintainable and separated from the rest of the main logic of each class. Change-Id: Id930154a05107e94b14710b7e343951b21f00e28 Signed-off-by: Vitor de Lima <[email protected]> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchCommand.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategy.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategyFactory.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/PPC64Strategy.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/X86_64Strategy.java 5 files changed, 74 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/21503/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchCommand.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchCommand.java new file mode 100644 index 0000000..0265979 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchCommand.java @@ -0,0 +1,7 @@ +package org.ovirt.engine.core.common.archstrategy; + +public interface ArchCommand { + void runForX86_64(); + + void runForPPC64(); +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategy.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategy.java new file mode 100644 index 0000000..bca5c02 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategy.java @@ -0,0 +1,10 @@ +package org.ovirt.engine.core.common.archstrategy; + +import org.ovirt.engine.core.common.businessentities.ArchitectureType; + +public interface ArchStrategy { + + public ArchitectureType getArchitecture(); + + public <T extends ArchCommand> T run(T c); +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategyFactory.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategyFactory.java new file mode 100644 index 0000000..2cff507 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/ArchStrategyFactory.java @@ -0,0 +1,21 @@ +package org.ovirt.engine.core.common.archstrategy; + +import java.util.EnumMap; + +import org.ovirt.engine.core.common.businessentities.ArchitectureType; + +public class ArchStrategyFactory { + + private static final EnumMap<ArchitectureType, ArchStrategy> architectureArchStrategyMap = + new EnumMap<ArchitectureType, ArchStrategy>(ArchitectureType.class); + + static { + architectureArchStrategyMap.put(ArchitectureType.x86_64, new X86_64Strategy()); + architectureArchStrategyMap.put(ArchitectureType.ppc64, new PPC64Strategy()); + } + + public static ArchStrategy getStrategy(ArchitectureType architecture) { + + return architectureArchStrategyMap.get(architecture); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/PPC64Strategy.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/PPC64Strategy.java new file mode 100644 index 0000000..ffad9c2 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/PPC64Strategy.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.core.common.archstrategy; + +import org.ovirt.engine.core.common.businessentities.ArchitectureType; + +public class PPC64Strategy implements ArchStrategy { + + @Override + public ArchitectureType getArchitecture() { + return ArchitectureType.ppc64; + } + + @Override + public <T extends ArchCommand> T run(T c) { + c.runForPPC64(); + return c; + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/X86_64Strategy.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/X86_64Strategy.java new file mode 100644 index 0000000..ad52c57 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/archstrategy/X86_64Strategy.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.core.common.archstrategy; + +import org.ovirt.engine.core.common.businessentities.ArchitectureType; + +public class X86_64Strategy implements ArchStrategy { + + @Override + public ArchitectureType getArchitecture() { + return ArchitectureType.x86_64; + } + + @Override + public <T extends ArchCommand> T run(T c) { + c.runForX86_64(); + return c; + } + +} -- To view, visit http://gerrit.ovirt.org/21503 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id930154a05107e94b14710b7e343951b21f00e28 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vitor de Lima <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
