Skip to main content
summaryrefslogtreecommitdiffstats
blob: b4f0a2c681dcca8ca3c4d92febc633c1c142645b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*******************************************************************************
 * Copyright (c) 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.ws.internal.explorer.platform.engine.transformer;

import java.util.Hashtable;
import java.util.Enumeration;

import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs;
import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataParser;

public class MultipartFormDataParserTransformer implements ITransformer
{
  protected Controller controller;

  public MultipartFormDataParserTransformer(Controller controller)
  {
    this.controller = controller;
  }

  public Hashtable normalize(Hashtable properties)
  {
    MultipartFormDataParser parser = (MultipartFormDataParser)properties.get(ActionInputs.MULTIPART_FORM_DATA_PARSER);
    String[] keys;
    try
    {
      keys = parser.getParameterNames();
    }
    catch (Throwable t)
    {
      keys = new String[0];
    }
    for (int i = 0; i < keys.length; i++)
    {
      StringBuffer newKey = new StringBuffer(ActionInputs.MULTIPART_FORM_DATA_PARSER);
      newKey.append(keys[i]);
      try
      {
        properties.put(newKey.toString(), parser.getParameterValues(keys[i]));
      }
      catch (Throwable t)
      {
      }
    }
    return properties;
  }
  
  public Hashtable deNormalize(Hashtable properties)
  {
    Enumeration e = properties.keys();
    while (e.hasMoreElements())
    {
      Object key = e.nextElement();
      if (key instanceof String)
      {
        if (((String)key).startsWith(ActionInputs.MULTIPART_FORM_DATA_PARSER))
        {
          String realKey = ((String)key).substring(ActionInputs.MULTIPART_FORM_DATA_PARSER.length());
          if (!properties.containsKey(realKey))
          {
            Object value = properties.remove(key);
            properties.put(realKey, value);
          }
        }
      }
    }
    return properties;
  }
}

Back to the top