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

Reply via email to