You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/05/13 16:23:29 UTC

svn commit: r170024 - in /lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases: AddIPRange.java DeleteIPRange.java IPRange.java IPRangeProfile.java

Author: andreas
Date: Fri May 13 07:23:28 2005
New Revision: 170024

URL: http://svn.apache.org/viewcvs?rev=170024&view=rev
Log:
continued addIPRange usecase, added mock classes for remaining IP range management usecases

Added:
    lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java
    lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRange.java
Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/AddIPRange.java
    lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/AddIPRange.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/AddIPRange.java?rev=170024&r1=170023&r2=170024&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/AddIPRange.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/AddIPRange.java Fri May 13 07:23:28 2005
@@ -20,7 +20,11 @@
 package org.apache.lenya.cms.ac.usecases;
 
 import java.io.File;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
 
+import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.lenya.ac.IPRange;
 import org.apache.lenya.ac.file.FileIPRange;
 import org.apache.lenya.ac.file.FileIPRangeManager;
@@ -50,6 +54,9 @@
         if (!AbstractItem.isValidId(id)) {
             addErrorMessage("This is not a valid IP range ID.");
         }
+
+        IPRangeProfile.validateAddresses(this);
+
     }
 
     /**
@@ -70,18 +77,46 @@
         String description = getParameterAsString(IPRangeProfile.DESCRIPTION);
 
         IPRange ipRange = new FileIPRange(configDir, id);
+        ContainerUtil.enableLogging(ipRange, getLogger());
+        
         ipRange.setName(name);
-
         ipRange.setDescription(description);
+        
+        String networkString = "";
+        String subnetString = "";
+        
+        for (int i = 0; i < 4; i++) {
+            if (i > 0) {
+                networkString += ".";
+                subnetString += ".";
+            }
+            Part netPart = (Part) getParameter(IPRangeProfile.NETWORK_ADDRESS + "-" + i);
+            networkString += netPart.getValue();
+            Part subPart = (Part) getParameter(IPRangeProfile.SUBNET_MASK + "-" + i);
+            subnetString += subPart.getValue();
+        }
+
+        InetAddress networkAddress = InetAddress.getByName(networkString);
+        ipRange.setNetworkAddress(networkAddress.getAddress());
+
+        InetAddress subnetMask = InetAddress.getByName(subnetString);
+        ipRange.setSubnetMask(subnetMask.getAddress());
+
         ipRange.save();
         getIpRangeManager().add(ipRange);
     }
-    
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
      */
     protected void initParameters() {
         super.initParameters();
+        List partNumbers = new ArrayList();
+        partNumbers.add(new Integer(0));
+        partNumbers.add(new Integer(1));
+        partNumbers.add(new Integer(2));
+        partNumbers.add(new Integer(3));
+        setParameter(IPRangeProfile.PART_NUMBERS, partNumbers);
         for (byte i = 0; i < 4; i++) {
             setParameter(IPRangeProfile.NETWORK_ADDRESS + "-" + i, new Part(i));
             setParameter(IPRangeProfile.SUBNET_MASK + "-" + i, new Part(i));

Added: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java?rev=170024&view=auto
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java Fri May 13 07:23:28 2005
@@ -0,0 +1,26 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.lenya.cms.ac.usecases;
+
+/**
+ * Delete an IP range.
+ *
+ * @version $Id:$
+ */
+public class DeleteIPRange {
+
+}

Added: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRange.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRange.java?rev=170024&view=auto
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRange.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRange.java Fri May 13 07:23:28 2005
@@ -0,0 +1,26 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.lenya.cms.ac.usecases;
+
+/**
+ * Show information about an IP range.
+ *
+ * @version $Id:$
+ */
+public class IPRange extends AccessControlUsecase {
+
+}

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java?rev=170024&r1=170023&r2=170024&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java Fri May 13 07:23:28 2005
@@ -22,6 +22,7 @@
 import java.net.InetAddress;
 
 import org.apache.lenya.ac.IPRange;
+import org.apache.lenya.cms.usecase.AbstractUsecase;
 
 /**
  * Usecase to change the profile of an IP range.
@@ -33,64 +34,84 @@
     protected static final String DESCRIPTION = "description";
     protected static final String NETWORK_ADDRESS = "networkAddress";
     protected static final String SUBNET_MASK = "subnetMask";
+    protected static final String PART_NUMBERS = "partNumbers";
 
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
      */
     protected void doExecute() throws Exception {
         super.doExecute();
-        
+
         String name = getParameterAsString(NAME);
         String description = getParameterAsString(DESCRIPTION);
-        
+
         getIPRange().setName(name);
         getIPRange().setDescription(description);
         getIPRange().save();
-        
+
     }
-    
+
     private IPRange ipRange;
-    
+
     /**
      * @return The IP range.
      */
     protected IPRange getIPRange() {
         return this.ipRange;
     }
-    
+
     /**
      * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
      */
     public void setParameter(String name, Object value) {
         super.setParameter(name, value);
-        
+
         if (name.equals(ID)) {
             String id = (String) value;
             this.ipRange = getIpRangeManager().getIPRange(id);
             if (this.ipRange == null) {
                 throw new RuntimeException("IP range [" + id + "] not found.");
             }
-            
+
             setParameter(NAME, this.ipRange.getName());
             setParameter(DESCRIPTION, this.ipRange.getDescription());
-            
+
             InetAddress networkAddress = this.ipRange.getNetworkAddress();
             InetAddress subnetMask = this.ipRange.getSubnetMask();
-            
+
+            for (byte i = 0; i < 4; i++) {
+                setParameter(NETWORK_ADDRESS + "-" + i, new Part(i, ""
+                        + networkAddress.getAddress()[i]));
+                setParameter(SUBNET_MASK + "-" + i, new Part(i, "" + subnetMask.getAddress()[i]));
+            }
+
+        }
+    }
+
+    protected static void validateAddresses(AbstractUsecase usecase) {
+        String[] names = { "network address", "subnet mask" };
+        String[] params = { IPRangeProfile.NETWORK_ADDRESS, IPRangeProfile.SUBNET_MASK };
+
+        for (byte type = 0; type < names.length; type++) {
             for (byte i = 0; i < 4; i++) {
-                setParameter(NETWORK_ADDRESS + "-" + i, new Part(i, networkAddress.getAddress()[i]));
-                setParameter(SUBNET_MASK + "-" + i, new Part(i, subnetMask.getAddress()[i]));
+                String paramName = params[type] + "-" + i;
+                Part part = new Part(i);
+                part.setValue(usecase.getParameterAsString(paramName));
+                if (!part.isValid()) {
+                    usecase.addErrorMessage("Part " + (i + 1) + " of the " + names[type]
+                            + " is not valid.");
+                }
+                usecase.setParameter(paramName, part);
             }
-            
         }
     }
-    
+
     /**
      * IP address holder.
      */
     public static class Address {
         private Part[] parts = new Part[4];
-        
+
         /**
          * Ctor.
          */
@@ -99,17 +120,17 @@
                 this.parts[i] = new Part(i);
             }
         }
-        
+
         /**
          * Ctor.
          * @param address The address.
          */
         public Address(InetAddress address) {
             for (byte i = 0; i < this.parts.length; i++) {
-                this.parts[i] = new Part(i, address.getAddress()[i]);
+                this.parts[i] = new Part(i, "" + address.getAddress()[i]);
             }
         }
-        
+
         /**
          * @return The parts of this address.
          */
@@ -117,32 +138,32 @@
             return this.parts;
         }
     }
-    
+
     /**
      * IP address part holder.
      */
     public static class Part {
         private String value;
         private byte position;
-        
+
         /**
          * Ctor.
          * @param _position The position.
          * @param _value The value.
          */
-        public Part(byte _position, byte _value) {
-            this.value = Byte.toString(_value);
+        public Part(byte _position, String _value) {
+            this.value = _value;
             this.position = _position;
         }
-        
+
         /**
          * Ctor.
          * @param _position The position.
          */
         public Part(byte _position) {
-            this(_position, (byte) 0);
+            this(_position, "0");
         }
-        
+
         /**
          * Returns the position
          * @return The position
@@ -150,7 +171,7 @@
         public byte getPosition() {
             return this.position;
         }
-        
+
         /**
          * Returns the value
          * @return The value
@@ -158,31 +179,33 @@
         public String getValue() {
             return this.value;
         }
-        
+
         /**
          * @param _value The value.
          */
         public void setValue(String _value) {
             this.value = _value;
         }
-        
+
         /**
          * Checks if the part is valid.
          * @return A boolean value.
          */
         public boolean isValid() {
-            
+
             boolean valid = true;
             try {
-                Byte.parseByte(this.value);
-            }
-            catch (NumberFormatException e) {
+                int i = Integer.parseInt(this.value);
+                if (!(0 <= i && i <= 255)) {
+                    valid = false;
+                }
+            } catch (NumberFormatException e) {
                 valid = false;
             }
-            
-            return valid; 
+
+            return valid;
         }
-        
+
     }
-    
-}
+
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org