繁体   English   中英

ContentModel无法解析为变量

[英]ContentModel cannot be resolved to a variable

我遇到这个错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    ContentModel cannot be resolved to a variable

    at test2CMIS.Test.main(Test.java:39)" 

而且我不明白它来自哪里,这是我的代码:

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=null;
        PersonService personService = null;

        if (authenticationService.authenticationExists("test") == false)
        {
           authenticationService.createAuthentication("test", "changeMe".toCharArray());

           PropertyMap ppOne = new PropertyMap(4);
           ppOne.put(ContentModel.PROP_USERNAME, "test");
           ppOne.put(ContentModel.PROP_FIRSTNAME, "firstName");
           ppOne.put(ContentModel.PROP_LASTNAME, "lastName");
           ppOne.put(ContentModel.PROP_EMAIL, "test"+"@example.com");

           personService.createPerson(ppOne);
        }
    }

我确实导入了:import org.alfresco.model.ContentModel; 还有很多其他库供我使用。

谢谢。

我正在使用的代码,在注释中留下了一些我也尝试过的东西,以便您可以看到我做了什么:

import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import org.alfresco.service.cmr.security.*;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;


import java.util.Iterator;

import org.alfresco.repo.jscript.People;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyMap;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
import org.apache.chemistry.opencmis.client.util.FileUtils;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=new AuthenticationServiceImpl();
        PersonService personService = new PersonServiceImpl();


        HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
        properties.put(ContentModel.PROP_USERNAME, "test");
        properties.put(ContentModel.PROP_FIRSTNAME, "test");
        properties.put(ContentModel.PROP_LASTNAME, "qsdqsd");
        properties.put(ContentModel.PROP_EMAIL, "wshAlors@gmail.com");
        properties.put(ContentModel.PROP_ENABLED, Boolean.valueOf(true));
        properties.put(ContentModel.PROP_ACCOUNT_LOCKED, Boolean.valueOf(false));
        personService.createPerson(properties);

        authenticationService.createAuthentication("test", "changeme".toCharArray());

        authenticationService.setAuthenticationEnabled("test", true);

        authenticationService.getAuthenticationEnabled("Admin");

        //String testAuthen = authenticationService.getCurrentTicket();
        //System.out.println(testAuthen);
        //QName username = QName.createQName("test");
        //Map<QName,Serializable> propertiesUser = new HashMap<QName,Serializable>();
        //propertiesUser.put(ContentModel.PROP_USERNAME,username);
        //propertiesUser.put(ContentModel.PROP_FIRSTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_LASTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_EMAIL, "test@example.com");
        //propertiesUser.put(ContentModel.PROP_PASSWORD,"0000");
        //personService.createPerson(propertiesUser);



        //if (authenticationService.authenticationExists("test") == false)
        //{
        //   authenticationService.createAuthentication("test", "changeMe".toCharArray());

        //   PropertyMap ppOne = new PropertyMap(4);
        //   ppOne.put(ContentModel.PROP_USERNAME, "test");
        //   ppOne.put(ContentModel.PROP_FIRSTNAME, "test");
        //   ppOne.put(ContentModel.PROP_LASTNAME, "test");
        //   ppOne.put(ContentModel.PROP_EMAIL, "test@example.com");
           //ppOne.put(ContentModel.PROP_JOBTITLE, "jobTitle");

        //   personService.createPerson(ppOne);
        //}
    }

    public  Session iniSession() {
        Session session;
        SessionFactoryImpl sf = SessionFactoryImpl.newInstance();
        Map<String, String> parameters = new HashMap<String, String>();
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter your logging : ");
        String log = reader.nextLine();
        System.out.println("Enter your password : ");
        String pass = reader.nextLine();

        parameters.put(SessionParameter.USER, log);
        parameters.put(SessionParameter.PASSWORD, pass);

        parameters.put(SessionParameter.BROWSER_URL, "http://127.0.0.1:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser");
        parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value());
        parameters.put(SessionParameter.REPOSITORY_ID, "-default-");

        try{
            session = sf.createSession(parameters);
        }catch(CmisUnauthorizedException cue){
            session = null;
            System.out.println("Wrong logging OR password !");
        }
        return session;
    }

您正在编写的可运行类与Alfresco运行的进程不同。 从这个意义上讲,您的课程“远程”运行。

由于您的课程正在Alfresco的远程运行,因此使用CMIS是正确的。 但是CMIS仅允许您对Alfresco中的文档和文件夹执行创建,读取,更新和删除(CRUD)功能。 CMIS不知道如何创建用户或组。

您的班级将无法实例化AuthenticationService或PersonService。 这些是Alfresco Foundation API的一部分,仅当您在与Alfresco相同的进程中运行(例如在Action,Behavior或Java支持的Web脚本中)时,这些API才起作用。 在这种情况下,您将使用Spring Dependency Injection将这些服务注入Java类。 然后,将您的类放在一个JAR中,该JAR将被部署到Alfresco Web应用程序中,并由与Alfresco相同的类加载器加载。

如果要远程创建用户,则应考虑使用Alfresco REST API 然后,您的可运行类可以使用HTTP客户端调用REST调用来创建人员和组。

感谢你做的一切 ! 多亏您和研究,我才知道该怎么做! 对于其他想知道如何做的人,我将发布如何做以及我以前了解的网站!

因此,您只需要使用Java来操作JSON,因为您的露天人员页面(127.0.0.1:8080/alfresco/service/api/people)返回JSON对象,并且您可以创建,删除,搜索...用户! 再次感谢!

网站:

https://api-explorer.alfresco.com/api-explorer/#/people

http://crunchify.com/json-manipulation-in-java-examples/

代码:这是用于创建用户的:

public User createUser(String firstN, String lastN, String email, String pass, String authTicket) throws Exception{
        try{
            String url = "http://127.0.0.1:8080/alfresco/service/api/people?alf_ticket="+authTicket;
            HttpClient httpclient = new HttpClient();
            PostMethod mPost = new PostMethod(url);

            //JSONObject obj = new JSONObject();
            //JSONArray people = obj.getJSONArray("people");
            JSONObject newUser = new JSONObject();
            newUser.put("userName", firstN.toLowerCase().charAt(0)+lastN.toLowerCase());
            newUser.put("enabled",true);
            newUser.put("firstName",firstN);
            newUser.put("lastName", lastN);
            newUser.put("email", email);
            newUser.put("quota",-1);
            newUser.put("emailFreedDisable",false);
            newUser.put("isDeleted",false);
            newUser.put("isAdminAuthority",false);
            newUser.put("password", pass);

            //people.put(newUser);
            //Response response = PostRequest(newUser.toString())); 
            StringRequestEntity requestEntity = new StringRequestEntity(
                    newUser.toString(),
                    "application/json",
                    "UTF-8");
            mPost.setRequestEntity(requestEntity);
            int statusCode2 = httpclient.executeMethod(mPost);

            mPost.releaseConnection();
        }catch(Exception e){
            System.err.println("[ERROR] "+e);
        }
        return new User(firstN, lastN);
    }

而且,如果您想让所有用户都在露天上使用:

public ArrayList<User> getAllUsers(String authTicket)
    {
        ArrayList<User> allUsers = new ArrayList<>();
        String lastName, firstName;
        try{
            String url = "http://127.0.0.1:8080/alfresco/service/api/people?alf_ticket="+authTicket;
            HttpClient httpclient = new HttpClient();
            GetMethod mPost = new GetMethod(url);
            int statusCode1 = httpclient.executeMethod(mPost);
            System.out.println("statusLine >>> "+statusCode1+"....."
                    +"\n status line \n"
                    +mPost.getStatusLine()+"\nbody \n"+mPost.getResponseBodyAsString());
            JSONObject obj = new JSONObject(mPost.getResponseBodyAsString());
            JSONArray people = obj.getJSONArray("people");
            int n = people.length();
            for(int i =0 ; i < n ; i++)
            {
                JSONObject peoples = people.getJSONObject(i);
                User u = new User(peoples.getString("firstName"), peoples.getString("lastName"));
                if (!allUsers.contains(u)){
                    allUsers.add(u);
                }
            }

        }catch(Exception e){
            System.err.println("[ERROR] "+e);
        }

        return(allUsers);

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM