You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by bl...@apache.org on 2012/08/27 19:17:37 UTC

svn commit: r1377755 - in /sqoop/branches/sqoop2: client/src/main/java/org/apache/sqoop/client/display/ client/src/main/java/org/apache/sqoop/client/request/ client/src/main/java/org/apache/sqoop/client/shell/ common/src/main/java/org/apache/sqoop/json...

Author: blee
Date: Mon Aug 27 17:17:37 2012
New Revision: 1377755

URL: http://svn.apache.org/viewvc?rev=1377755&view=rev
Log:
SQOOP-576 Implement command show framework

Added:
    sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/
    sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/FormDisplayer.java
    sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/request/FrameworkRequest.java
    sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/shell/ShowFrameworkFunction.java
    sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/FrameworkBean.java
    sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/
    sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/FormSerialization.java
    sqoop/branches/sqoop2/common/src/test/java/org/apache/sqoop/json/TestFrameworkBean.java
    sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/handler/FrameworkRequestHandler.java
    sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/server/v1/FrameworkServlet.java

Added: sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/FormDisplayer.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/FormDisplayer.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/FormDisplayer.java (added)
+++ sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/display/FormDisplayer.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.client.display;
+
+import org.apache.sqoop.model.MForm;
+import org.apache.sqoop.model.MFramework;
+import org.apache.sqoop.model.MInput;
+import org.apache.sqoop.model.MInputType;
+import org.apache.sqoop.model.MJobForms;
+import org.apache.sqoop.model.MStringInput;
+import org.codehaus.groovy.tools.shell.IO;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Convenience static methods for displaying form related information
+ */
+public class FormDisplayer {
+
+  public static void displayFormDetails(IO io, MFramework framework) {
+    io.out.print("  Supported job types: ");
+    io.out.println(framework.getAllJobsForms().keySet().toString());
+
+    displayForms(io, framework.getConnectionForms().getForms(), "Connection");
+
+    for (MJobForms jobForms : framework.getAllJobsForms().values()) {
+      io.out.print("  Forms for job type ");
+      io.out.print(jobForms.getType().name());
+      io.out.println(":");
+
+      displayForms(io, jobForms.getForms(), "Job");
+    }
+  }
+
+  public static void displayForms(IO io, List<MForm> forms, String type) {
+    Iterator<MForm> fiter = forms.iterator();
+    int findx = 1;
+    while (fiter.hasNext()) {
+      io.out.print("    ");
+      io.out.print(type);
+      io.out.print(" form ");
+      io.out.print(findx++);
+      io.out.println(":");
+
+      MForm form = fiter.next();
+      io.out.print("      Name: ");
+      io.out.println(form.getName());
+
+      List<MInput<?>> inputs = form.getInputs();
+      Iterator<MInput<?>> iiter = inputs.iterator();
+      int iindx = 1;
+      while (iiter.hasNext()) {
+        io.out.print("      Input ");
+        io.out.print(iindx++);
+        io.out.println(":");
+
+        MInput<?> input = iiter.next();
+        io.out.print("        Name: ");
+        io.out.println(input.getName());
+        io.out.print("        Type: ");
+        io.out.println(input.getType());
+        if (input.getType() == MInputType.STRING) {
+          io.out.print("        Mask: ");
+          io.out.println(((MStringInput)input).isMasked());
+          io.out.print("        Size: ");
+          io.out.println(((MStringInput)input).getMaxLength());
+        }
+      }
+    }
+  }
+
+  private FormDisplayer() {
+    // Do not instantiate
+  }
+}

Added: sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/request/FrameworkRequest.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/request/FrameworkRequest.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/request/FrameworkRequest.java (added)
+++ sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/request/FrameworkRequest.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.client.request;
+
+import org.apache.sqoop.json.FrameworkBean;
+import org.json.simple.JSONObject;
+import org.json.simple.JSONValue;
+
+/**
+ *
+ */
+public class FrameworkRequest extends Request {
+  public FrameworkBean doGet(String serverUrl) {
+    String response = null;
+    response = super.get(serverUrl + "v1/framework");
+    JSONObject jsonObject = (JSONObject) JSONValue.parse(response);
+
+    FrameworkBean frameworkBean = new FrameworkBean();
+    frameworkBean.restore(jsonObject);
+
+    return frameworkBean;
+  }
+}

Added: sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/shell/ShowFrameworkFunction.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/shell/ShowFrameworkFunction.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/shell/ShowFrameworkFunction.java (added)
+++ sqoop/branches/sqoop2/client/src/main/java/org/apache/sqoop/client/shell/ShowFrameworkFunction.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.client.shell;
+
+import org.apache.sqoop.client.core.Environment;
+import org.apache.sqoop.client.request.FrameworkRequest;
+import org.apache.sqoop.json.FrameworkBean;
+import org.apache.sqoop.model.MFramework;
+import org.apache.sqoop.model.MJobForms;
+import org.codehaus.groovy.tools.shell.IO;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import static org.apache.sqoop.client.display.FormDisplayer.*;
+
+/**
+ *
+ */
+public class ShowFrameworkFunction extends SqoopFunction {
+
+  private IO io;
+  private FrameworkRequest frameworkRequest;
+
+  @SuppressWarnings("static-access")
+  protected ShowFrameworkFunction(IO io) {
+    this.io = io;
+  }
+
+  public void printHelp(PrintWriter out) {
+    out.println("Usage: show framework");
+    super.printHelp(out);
+  }
+
+  public Object execute(List<String> args) {
+    if (args.size() != 1) {
+      printHelp(io.out);
+      io.out.println();
+      return null;
+    }
+
+    showFramework();
+
+    return null;
+  }
+
+  private void showFramework() {
+    if (frameworkRequest == null) {
+      frameworkRequest = new FrameworkRequest();
+    }
+
+    FrameworkBean frameworkBean =
+      frameworkRequest.doGet(Environment.getServerUrl());
+    MFramework framework = frameworkBean.getFramework();
+
+    io.out.println("@|bold Framework specific options: |@");
+
+    io.out.print("Persistent id: ");
+    io.out.println(framework.getPersistenceId());
+
+    displayFormDetails(io, framework);
+
+    io.out.println();
+  }
+}

Added: sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/FrameworkBean.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/FrameworkBean.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/FrameworkBean.java (added)
+++ sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/FrameworkBean.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,99 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.json;
+
+import org.apache.sqoop.model.MConnectionForms;
+import org.apache.sqoop.model.MForm;
+import org.apache.sqoop.model.MFramework;
+import org.apache.sqoop.model.MJob;
+import org.apache.sqoop.model.MJobForms;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.apache.sqoop.json.util.FormSerialization.*;
+
+/**
+ *
+ */
+public class FrameworkBean implements JsonBean {
+
+
+  private MFramework framework;
+
+  // for "extract"
+  public FrameworkBean(MFramework framework) {
+    this.framework = framework;
+  }
+
+  // for "restore"
+  public FrameworkBean() {
+  }
+
+  public MFramework getFramework() {
+    return framework;
+  }
+
+  @SuppressWarnings("unchecked")
+  @Override
+  public JSONObject extract() {
+    JSONArray conForms =
+      extractForms(framework.getConnectionForms().getForms());
+    JSONObject jobForms = new JSONObject();
+
+    for (MJobForms job : framework.getAllJobsForms().values()) {
+      jobForms.put(job.getType().name(), extractForms(job.getForms()));
+    }
+
+    JSONObject result = new JSONObject();
+    result.put(ID, framework.getPersistenceId());
+    result.put(CON_FORMS, conForms);
+    result.put(JOB_FORMS, jobForms);
+    return result;
+  }
+
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public void restore(JSONObject jsonObject) {
+    long id = (Long) jsonObject.get(ID);
+
+    List<MForm> connForms = restoreForms((JSONArray) jsonObject.get(CON_FORMS));
+
+    JSONObject jobForms =  (JSONObject) jsonObject.get(JOB_FORMS);
+
+    List<MJobForms> jobs = new ArrayList<MJobForms>();
+    for( Map.Entry entry : (Set<Map.Entry>) jobForms.entrySet()) {
+      //TODO(jarcec): Handle situation when server is supporting operation
+      // that client do not know (server do have newer version than client)
+      MJob.Type type = MJob.Type.valueOf((String) entry.getKey());
+
+      List<MForm> job = restoreForms((JSONArray) entry.getValue());
+
+      jobs.add(new MJobForms(type, job));
+    }
+
+    framework = new MFramework(new MConnectionForms(connForms), jobs);
+    framework.setPersistenceId(id);
+  }
+
+}

Added: sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/FormSerialization.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/FormSerialization.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/FormSerialization.java (added)
+++ sqoop/branches/sqoop2/common/src/main/java/org/apache/sqoop/json/util/FormSerialization.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,154 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.json.util;
+
+import org.apache.sqoop.model.MForm;
+import org.apache.sqoop.model.MFormType;
+import org.apache.sqoop.model.MInput;
+import org.apache.sqoop.model.MInputType;
+import org.apache.sqoop.model.MMapInput;
+import org.apache.sqoop.model.MStringInput;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Convenient static methods for serializing forms.
+ */
+public class FormSerialization {
+
+  public static final String ID = "id";
+  public static final String NAME = "name";
+  public static final String CLASS = "class";
+  public static final String CON_FORMS = "con_forms";
+  public static final String JOB_FORMS = "job_forms";
+
+  public static final String FORM_NAME = "name";
+  public static final String FORM_TYPE = "type";
+  public static final String FORM_INPUTS = "inputs";
+  public static final String FORM_INPUT_NAME = "name";
+  public static final String FORM_INPUT_TYPE = "type";
+  public static final String FORM_INPUT_MASK = "mask";
+  public static final String FORM_INPUT_SIZE = "size";
+
+  /**
+   * Transform given list of forms to JSON Array object.
+   *
+   * @param mForms List of forms.
+   * @return JSON object with serialized form of the list.
+   */
+  @SuppressWarnings("unchecked")
+  public static JSONArray extractForms(List<MForm> mForms) {
+    JSONArray forms = new JSONArray();
+
+    for (MForm mForm : mForms) {
+      forms.add(extractForm(mForm));
+    }
+
+    return forms;
+  }
+
+  /**
+   * Transform given form to JSON Object.
+   *
+   * @param mForm Given MForm instance
+   * @return Serialized JSON object.
+   */
+  @SuppressWarnings("unchecked")
+  public static JSONObject extractForm(MForm mForm) {
+    JSONObject form = new JSONObject();
+    form.put(FORM_NAME, mForm.getName());
+    form.put(FORM_TYPE, MFormType.CONNECTION.toString());
+    JSONArray mInputs = new JSONArray();
+    form.put(FORM_INPUTS, mInputs);
+
+    for (MInput<?> mInput : mForm.getInputs()) {
+      JSONObject input = new JSONObject();
+      mInputs.add(input);
+
+      input.put(FORM_INPUT_NAME, mInput.getName());
+      input.put(FORM_INPUT_TYPE, mInput.getType().toString());
+      if (mInput.getType() == MInputType.STRING) {
+        input.put(FORM_INPUT_MASK,
+            ((MStringInput)mInput).isMasked());
+        input.put(FORM_INPUT_SIZE,
+            ((MStringInput)mInput).getMaxLength());
+      }
+    }
+
+    return form;
+  }
+
+  /**
+   * Restore List of MForms from JSON Array.
+   *
+   * @param forms JSON array representing list of MForms
+   * @return Restored list of MForms
+   */
+  public static List<MForm> restoreForms(JSONArray forms) {
+    List<MForm> mForms = new ArrayList<MForm>();
+
+    for (int i = 0; i < forms.size(); i++) {
+      mForms.add(restoreForm((JSONObject) forms.get(i)));
+    }
+
+    return mForms;
+  }
+
+  /**
+   * Restore one MForm from JSON Object.
+   *
+   * @param form JSON representation of the MForm.
+   * @return Restored MForm.
+   */
+  public static MForm restoreForm(JSONObject form) {
+    JSONArray inputs = (JSONArray) form.get(FORM_INPUTS);
+
+    List<MInput<?>> mInputs = new ArrayList<MInput<?>>();
+    for (int i = 0; i < inputs.size(); i++) {
+      JSONObject input = (JSONObject) inputs.get(i);
+      MInputType type =
+          MInputType.valueOf((String) input.get(FORM_INPUT_TYPE));
+      switch (type) {
+        case STRING: {
+          String name = (String) input.get(FORM_INPUT_NAME);
+          boolean mask = (Boolean) input.get(FORM_INPUT_MASK);
+          long size = (Long) input.get(FORM_INPUT_SIZE);
+          MInput<String> mInput = new MStringInput(name, mask, (short) size);
+          mInputs.add(mInput);
+          break;
+        }
+        case MAP: {
+          String name = (String) input.get(FORM_INPUT_NAME);
+          MInput<Map<String, String>> mInput = new MMapInput(name);
+          mInputs.add(mInput);
+          break;
+        }
+      }
+    }
+
+    return new MForm((String) form.get(FORM_NAME), mInputs);
+  }
+
+  private FormSerialization() {
+    // Do not instantiate
+  }
+}

Added: sqoop/branches/sqoop2/common/src/test/java/org/apache/sqoop/json/TestFrameworkBean.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/common/src/test/java/org/apache/sqoop/json/TestFrameworkBean.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/common/src/test/java/org/apache/sqoop/json/TestFrameworkBean.java (added)
+++ sqoop/branches/sqoop2/common/src/test/java/org/apache/sqoop/json/TestFrameworkBean.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.json;
+
+import org.apache.sqoop.model.MConnectionForms;
+import org.apache.sqoop.model.MForm;
+import org.apache.sqoop.model.MFramework;
+import org.apache.sqoop.model.MInput;
+import org.apache.sqoop.model.MJob;
+import org.apache.sqoop.model.MJobForms;
+import org.apache.sqoop.model.MMapInput;
+import org.apache.sqoop.model.MStringInput;
+import org.json.simple.JSONObject;
+import org.json.simple.JSONValue;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class TestFrameworkBean {
+
+  /**
+   * Test that by JSON serialization followed by deserialization we will get
+   * equal framework object.
+   */
+  @Test
+  public void testSerialization() {
+    MFramework framework = getFramework("1");
+    // Serialize it to JSON object
+    FrameworkBean bean = new FrameworkBean(framework);
+    JSONObject json = bean.extract();
+
+    // "Move" it across network in text form
+    String string = json.toJSONString();
+
+    // Retrieved transferred object
+    JSONObject retrievedJson = (JSONObject) JSONValue.parse(string);
+    FrameworkBean retrievedBean = new FrameworkBean();
+    retrievedBean.restore(retrievedJson);
+
+    assertEquals(framework, retrievedBean.getFramework());
+  }
+
+  public MFramework getFramework(String parameter) {
+    List<MInput<?>> inputs;
+
+    List<MForm> connectionForms = new ArrayList<MForm>();
+    inputs = new ArrayList<MInput<?>>();
+    inputs.add(new MStringInput("url", false, (short) 10));
+    inputs.add(new MStringInput("username", false, (short) 10));
+    inputs.add(new MStringInput("password", false, (short) 10));
+    connectionForms.add(new MForm("connection", inputs));
+
+    inputs = new ArrayList<MInput<?>>();
+    inputs.add(new MMapInput("properties"));
+    connectionForms.add(new MForm("properties", inputs));
+    MConnectionForms connection = new MConnectionForms(connectionForms);
+
+    List<MForm> jobForms = new ArrayList<MForm>();
+    inputs = new ArrayList<MInput<?>>();
+    inputs.add(new MStringInput("A", false, (short) 10));
+    inputs.add(new MStringInput("B", false, (short) 10));
+    inputs.add(new MStringInput("C", false, (short) 10));
+    jobForms.add((new MForm("D", inputs)));
+
+    inputs = new ArrayList<MInput<?>>();
+    inputs.add(new MStringInput("Z", false, (short) 10));
+    inputs.add(new MStringInput("X", false, (short) 10));
+    inputs.add(new MStringInput("Y", false, (short) 10));
+    jobForms.add(new MForm("D", inputs));
+
+    List<MJobForms> jobs = new ArrayList<MJobForms>();
+    jobs.add(new MJobForms(MJob.Type.IMPORT, jobForms));
+
+    return new MFramework(connection, jobs);
+  }
+
+}

Added: sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/handler/FrameworkRequestHandler.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/handler/FrameworkRequestHandler.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/handler/FrameworkRequestHandler.java (added)
+++ sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/handler/FrameworkRequestHandler.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.handler;
+
+import org.apache.log4j.Logger;
+import org.apache.sqoop.common.SqoopException;
+import org.apache.sqoop.framework.FrameworkManager;
+import org.apache.sqoop.json.FrameworkBean;
+import org.apache.sqoop.json.JsonBean;
+import org.apache.sqoop.server.RequestContext;
+import org.apache.sqoop.server.RequestHandler;
+
+/**
+ *
+ */
+public class FrameworkRequestHandler implements RequestHandler {
+
+  private static final Logger LOG =
+      Logger.getLogger(ConnectorRequestHandler.class);
+
+  public FrameworkRequestHandler() {
+    LOG.info("FrameworkRequestHandler initialized");
+  }
+
+  @Override
+  public JsonBean handleEvent(RequestContext ctx) throws SqoopException {
+    return new FrameworkBean(FrameworkManager.getFramework());
+  }
+}

Added: sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/server/v1/FrameworkServlet.java
URL: http://svn.apache.org/viewvc/sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/server/v1/FrameworkServlet.java?rev=1377755&view=auto
==============================================================================
--- sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/server/v1/FrameworkServlet.java (added)
+++ sqoop/branches/sqoop2/server/src/main/java/org/apache/sqoop/server/v1/FrameworkServlet.java Mon Aug 27 17:17:37 2012
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sqoop.server.v1;
+
+import org.apache.sqoop.handler.FrameworkRequestHandler;
+import org.apache.sqoop.json.JsonBean;
+import org.apache.sqoop.server.RequestContext;
+import org.apache.sqoop.server.RequestHandler;
+import org.apache.sqoop.server.SqoopProtocolServlet;
+
+/**
+ * Get framework metadata
+ */
+public class FrameworkServlet extends SqoopProtocolServlet {
+  private RequestHandler frameworkRequestHandler;
+
+  public FrameworkServlet() {
+    frameworkRequestHandler = new FrameworkRequestHandler();
+  }
+
+  @Override
+  protected JsonBean handleGetRequest(RequestContext ctx) throws Exception {
+    return frameworkRequestHandler.handleEvent(ctx);
+  }
+}